一个字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。
比方说,"abaacc" 的美丽值为 3 - 1 = 2 。
给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。
示例 1:
输入:s = "aabcb"
输出:5
解释:美丽值不为零的字符串包括 ["aab","aabc","aabcb","abcb","bcb"] ,每一个字符串的美丽值都为 1 。
示例 2:
输入:s = "aabcbaa"
输出:17
提示:
1 <= s.length <= 500
s 只包含小写英文字母。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sum-of-beauty-of-all-substrings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
刚开始找到一个优化的思路,想了一下午结果考虑的越多,需要设置的判断越复杂,最后实在是写不下去了,无奈放弃,用最简单的暴力法试了下,结果通过了,那就这样吧,以后有机会了优化优化。
代码如下:
1 class Solution { 2 public int beautySum(String s) { 3 int res = 0; 4 // 两层for循环遍历出所有可能的子字符串。 5 for (int i = 0; i < s.length(); i++) { 6 for (int j = i + 1; j < s.length(); j++) { 7 String m = s.substring(i, j + 1); 8 char[] arr = m.toCharArray(); 9 //只包括英文小写字母,存储每个字母出现的次数。 10 int[] arr1 = new int[26]; 11 for (char a : arr) { 12 arr1[a - 97] += 1; 13 } 14 int max = 0; 15 int min = 2147483647; 16 for (int num : arr1) { 17 if (num > 0) { 18 max = Math.max(max, num); 19 min = Math.min(min, num); 20 } 21 } 22 if ((max - min) > 0) { 23 res += max - min; 24 } 25 } 26 } 27 return res; 28 } 29 }
运行结果:
标签:12,min,int,1781,---,num,美丽,max,字符串 From: https://www.cnblogs.com/allWu/p/16976872.html