1781. 所有子字符串美丽值之和
难度中等30
一个字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。
- 比方说,
"abaacc"
的美丽值为3 - 1 = 2
。
给你一个字符串 s
,请你返回它所有子字符串的 美丽值 之和。
示例 1:
输入:s = "aabcb"
输出:5
解释:美丽值不为零的字符串包括 ["aab","aabc","aabcb","abcb","bcb"] ,每一个字符串的美丽值都为 1 。
示例 2:
输入:s = "aabcbaa"
输出:17
提示:
1 <= s.length <= 500
s
只包含小写英文字母。
枚举+计数
枚举每个子串的起点位置 i,找到以该起点位置的字符为左端点的所有子串,然后计算每个子串的美丽值,累加到答案中。
class Solution {
public int beautySum(String s) {
int res = 0;
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++){
int[] cnt = new int[26];
for(int j = i; j < arr.length; j++){
cnt[arr[j]-'a']++;
int maxi = 0,mini = Integer.MAX_VALUE;
for(int c : cnt){
if(c > 0){
maxi = Math.max(maxi, c);
mini = Math.min(mini, c);
}
}
res += maxi-mini;
}
}
return res;
}
}