当前位置: 首页 > web >正文

LeetCode 1781. 所有子字符串美丽值之和 题解

示例

输入:s = "aabcb"
输出:5
解释:美丽值不为零的字符串包括 ["aab","aabc","aabcb","abcb","bcb"] ,每一个字符串的美丽值都为 1

这题光用文字解说还是无法达到讲解题目的预期,所以就结合图文一并来讲讲本题,我的做题思路

如图所示是abaacc这串字符串的遍历过程,根据题目我们可以知道,只有当三个字符起步的时候,才可能存在差值并可以计入统计的子字符串,r向右扩展l每次都得从0开始向右扩展至r-2,遍历所有的子字符串然后统计差值计入sum

维护的话我就选择使用map来统计数目,然后通过Math.max和Math.min方法获取最大的值和最小的值

class Solution {public int beautySum(String s) {// 可暴力 右扩展左收缩int n = s.length();int ans = 0;for(int i=0;i<n;i++){int l = 0;while(l<=i-2){HashMap<Character,Integer> map = new HashMap<>();int max = Integer.MIN_VALUE;int min = Integer.MAX_VALUE;char val2 = s.charAt(l);for(int j=l;j<=i;j++){char val = s.charAt(j);map.put(val,map.getOrDefault(val,0)+1);}for(Map.Entry<Character,Integer> entry:map.entrySet()){// System.out.println("key="+entry.getKey()+" value="+entry.getValue());max = Math.max(max,entry.getValue());min = Math.min(min,entry.getValue());}ans+=max-min;// System.out.println("ans:"+ans);map.put(val2,map.getOrDefault(val2,0)-1);l++;}}return ans;}
}

虽然跑样例的确是过了,且其复杂度也和官方题解描述的暴力方法差不多,但是由于使用了map维护导致复杂度还是会略高于使用数组维护,所以最后也是喜提了超时报红。

class Solution {public int beautySum(String s) {int res = 0;for (int i = 0; i < s.length(); i++) {int[] cnt = new int[26];int maxFreq = 0;for (int j = i; j < s.length(); j++) {cnt[s.charAt(j) - 'a']++;maxFreq = Math.max(maxFreq, cnt[s.charAt(j) - 'a']);int minFreq = s.length();for (int k = 0; k < 26; k++) {if (cnt[k] > 0) {minFreq = Math.min(minFreq, cnt[k]);}}res += maxFreq - minFreq;}}return res;}
}

这上面是官方题解,和我思路差不多,都是暴力求解

http://www.xdnf.cn/news/4320.html

相关文章:

  • C++编程语言:从高效系统开发到现代编程范式的演进之路
  • python仓库库存管理系统-药房药品库存管理系统
  • 极简RT-Thread入门教程
  • 高等数学第六章---定积分(§6.1元素法6.2定积分在几何上的应用1)
  • XILINX原语之——xpm_fifo_async(异步FIFO灵活设置位宽、深度)
  • vscode远程服务器连接----过程尝试写入的管道不存在
  • javascript Map 和对象使用
  • echarts报错问题initialize failed:invalid dom
  • AI技术下研发体系重构
  • Vue项目Git提交流程集成
  • Leetcode 刷题记录 07 —— 链表
  • excel表数据导入数据库
  • Selenium模拟人类,操作网页的行为(全)
  • Pointpillars(三)工程实践
  • 新手SEO基础操作入门精要
  • Java学习手册:Base64 编码概念和应用场景
  • 解锁创意显示,强力巨彩软模组引领柔性显示技术创新
  • 随机快速排序算法
  • GAN模型
  • 总结七种提示优化方案的核心实现流程
  • 第15章 Python数据类型详解之分解理解:基础数据类型常见易错点和性能优化篇
  • Visual Studio 快捷键更改和设置
  • 【C++游戏引擎开发】第30篇:物理引擎(Bullet)—软体动力学系统
  • Java开发 自定义注解(更新中)
  • MySQL 常用函数分类
  • 编程日志4.25
  • 十分钟了解 @MapperScan
  • 盛元广通动物表型分析数字管理平台
  • framebuffer框架与示例
  • 保障企业的数据安全需要做什么?