【每日一题Day54】LC1781所有子字符串美丽值之和 | 暴力

简介: 最大频率取决于当前字母是否会影响最大频率,因此只需一个变量记录前一子字符串s[i,j−1]的最大频率即可

所有子字符串美丽值之和【LC1781】


The beauty of a string is the difference in frequencies between the most frequent and least frequent characters.


For example, the beauty of "abaacc" is 3 - 1 = 2.

Given a string s, return the sum of beauty of all of its substrings.


开始居家的第一天


  • 题意:统计所有子字符串的美丽值⌈ \lceil⌈同一字母的最大出现次数-最小出现次数⌋ \rfloor⌋之和


  • 思路:双层循环暴力遍历每个子字符串s[i,j],统计最大频率和最小频率


。最大频率取决于当前字母是否会影响最大频率,因此只需一个变量记录前一子字符串s[i,j−1]的最大频率即可


。最小频率则需要遍历哈希表统计最小频率,如果s[i,j−1]的最小频率为s[j]的对应的字母,那么当再次出现改字母时,可能的最小频率为其他任意字母


  • 实现


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


。复杂度


  • 时间复杂度:O ( n 2 C )
  • 空间复杂度:O ( 1 )
目录
相关文章
|
6月前
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
51 0
|
6月前
【每日一题Day150】LC1616分割两个字符串得到回文串 | 双指针+贪心
【每日一题Day150】LC1616分割两个字符串得到回文串 | 双指针+贪心
37 0
|
6月前
【每日一题Day191】LC2423删除字符使频率相同 | 枚举 分类讨论
【每日一题Day191】LC2423删除字符使频率相同 | 枚举 分类讨论
50 0
|
6月前
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
47 0
|
5月前
|
数据安全/隐私保护
【洛谷 P1928】外星密码 题解(递归+字符串)
外星密码挑战涉及解压缩由重复子串压缩的字符串,如`[3FUN]`代表`FUNFUNFUN`。输入是一行压缩过的字符串,输出是解压缩的结果。代码使用递归方法,遇到`[`读取重复次数并解压下一层,遇到`]`返回当前层结果,否则直接添加字符。样例输入`AC[3FUN]`输出`ACFUNFUNFUN`。处理的数据限制为解压后长度在20000内,最多十重压缩。
85 0
|
6月前
|
Java 测试技术 Python
每日一题《剑指offer》字符串篇之表示数值的字符串
每日一题《剑指offer》字符串篇之表示数值的字符串
47 0
每日一题《剑指offer》字符串篇之表示数值的字符串
|
6月前
【每日一题Day129】LC1247交换字符使得字符串相同 | 贪心
【每日一题Day129】LC1247交换字符使得字符串相同 | 贪心
52 0
|
6月前
【每日一题Day152】LC1012至少有1位重复的数字 | 数位dp
【每日一题Day152】LC1012至少有1位重复的数字 | 数位dp
50 0
|
6月前
【每日一题Day238】LC1177构建回文串检测 | 前缀和 + 异或
【每日一题Day238】LC1177构建回文串检测 | 前缀和 + 异或
58 0