【每日一题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 )
目录
相关文章
|
1月前
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
32 0
|
1月前
【每日一题Day150】LC1616分割两个字符串得到回文串 | 双指针+贪心
【每日一题Day150】LC1616分割两个字符串得到回文串 | 双指针+贪心
22 0
|
1月前
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
26 0
|
1月前
|
Java 测试技术 Python
每日一题《剑指offer》字符串篇之表示数值的字符串
每日一题《剑指offer》字符串篇之表示数值的字符串
29 0
每日一题《剑指offer》字符串篇之表示数值的字符串
|
1月前
【每日一题Day129】LC1247交换字符使得字符串相同 | 贪心
【每日一题Day129】LC1247交换字符使得字符串相同 | 贪心
28 0
|
1月前
【每日一题Day152】LC1012至少有1位重复的数字 | 数位dp
【每日一题Day152】LC1012至少有1位重复的数字 | 数位dp
29 0
|
7月前
|
存储 算法 Serverless
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
54 0
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
|
7月前
|
算法
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
49 0
|
10月前
|
算法 索引
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
|
10月前
|
算法 安全
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和