欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ LeetCode1781題解所有子字符串美麗值之和

 更新時間:2022年12月16日 10:54:15   作者:LetMeFly  
這篇文章主要為大家介紹了C++ LeetCode1781題解所有子字符串美麗值之和,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

LeetCode 1781.所有子字符串美麗值之和

力扣題目鏈接:leetcode.cn/problems/su…

一個字符串的 美麗值 定義為:出現(xiàn)頻率最高字符與出現(xiàn)頻率最低字符的出現(xiàn)次數(shù)之差。

  • 比方說,"abaacc" 的美麗值為 3 - 1 = 2 。

給你一個字符串 s ,請你返回它所有子字符串的 美麗值 之和。

示例 1:

輸入:s = "aabcb"
輸出:5
解釋:美麗值不為零的字符串包括 ["aab","aabc","aabcb","abcb","bcb"] ,每一個字符串的美麗值都為 1 。

示例 2:

輸入:s = "aabcbaa"
輸出:17

提示:

  • 1 <= s.length <= 500
  • s 只包含小寫英文字母。

方法一:前綴和

我們分別統(tǒng)計出26種字母的前綴和

這樣,我們只需要枚舉子串區(qū)間(兩重循環(huán)枚舉子串首尾),再統(tǒng)計出這個區(qū)間中,字母的最大和最小出現(xiàn)頻率,累加到答案中即可。

AC代碼

C++

class Solution {
public:
    int beautySum(string s) {
        int n = s.size();
        vector<vector<int>> prefix(26, vector<int>(n + 1));
        for (int i = 1; i <= n; i++) {
            for (int c = 0; c < 26; c++) {
                prefix[c][i] = prefix[c][i - 1];
            }
            prefix[s[i - 1] - 'a'][i]++;
        }
        int ans = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                int M = 0, m = 1000;
                for (int c = 0; c < 26; c++) {
                    int thisC = prefix[c][j + 1] - prefix[c][i];
                    M = max(M, thisC);
                    if (thisC) {  // 不能出現(xiàn)0次
                        m = min(m, thisC);
                    }
                }
                // printf("i = %d, j = %d, M = %d, m = %d\n", i, j, M, m);  //***********
                ans += M - m;
            }
        }
        return ans;
    }
};

方法二:邊遍歷邊計算

方法一中,我們預處理使用前綴和計算出了每種元素的出現(xiàn)情況。但是每種字母的前綴和都需要O(len(s))O(len(s))O(len(s))的空間復雜度來保存

方法二中,我們不提前預處理計算出字母的出現(xiàn)情況,而是在枚舉字符串終點的同時計算。這樣,空間復雜度就減小了一個維度。

AC代碼

C++

class Solution {
public:
    int beautySum(string s) {
        int ans = 0;
        int n = s.size();
        for (int i = 0; i < n; i++) {
            int cnt[26] = {0};  // 只需要開辟O(C)的空間
            for (int j = i; j < n; j++) {
                cnt[s[j] - 'a']++;  // 枚舉子串終點的同時統(tǒng)計元素出現(xiàn)的次數(shù)
                int M = 0, m = 1000;
                for (int d = 0; d < 26; d++) {
                    M = max(M, cnt[d]);
                    if (cnt[d])
                        m = min(m, cnt[d]);
                }
                ans += M - m;
            }
        }
        return ans;
    }
};

以上就是C++ LeetCode1781題解所有子字符串美麗值之和的詳細內(nèi)容,更多關(guān)于C++ 子字符串美麗值和的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言程序設(shè)計第五版譚浩強課后答案(第二章答案)

    C語言程序設(shè)計第五版譚浩強課后答案(第二章答案)

    這篇文章主要介紹了C語言程序設(shè)計第五版譚浩強課后答案(第二章答案),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-04-04
  • c語言單鏈表尾添加的深入講解

    c語言單鏈表尾添加的深入講解

    這篇文章主要給大家介紹了關(guān)于c語言單項鏈表尾添加的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C語言實現(xiàn)通訊錄的方法(包括靜態(tài)版本和動態(tài)版本)

    C語言實現(xiàn)通訊錄的方法(包括靜態(tài)版本和動態(tài)版本)

    本文給大家分享C語言實現(xiàn)通訊錄的方法(包括靜態(tài)版本和動態(tài)版本),針對每種方法給大家介紹的非常詳細,需要的朋友參考下吧
    2021-09-09
  • 基于C++實現(xiàn)一個日期計算器

    基于C++實現(xiàn)一個日期計算器

    這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)一個簡單的日期計算器,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-10-10
  • C語言三子棋游戲的簡單設(shè)計

    C語言三子棋游戲的簡單設(shè)計

    這篇文章主要為大家詳細介紹了C語言三子棋游戲的簡單設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C/C++經(jīng)典算法之約瑟夫問題詳解

    C/C++經(jīng)典算法之約瑟夫問題詳解

    這篇文章主要給大家介紹了關(guān)于C/C++經(jīng)典算法之約瑟夫問題的相關(guān)資料,約瑟夫環(huán)問題是一道經(jīng)典的數(shù)據(jù)結(jié)構(gòu)的題目,本文介紹了解決約瑟夫問題的三種方法,需要的朋友可以參考下
    2021-07-07
  • C語言中函數(shù)聲明與調(diào)用問題

    C語言中函數(shù)聲明與調(diào)用問題

    以下是對C語言中的函數(shù)聲明與調(diào)用進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • C語言棧與隊列面試題詳解

    C語言棧與隊列面試題詳解

    棧和隊列,嚴格意義上來說,也屬于線性表,因為它們也都用于存儲邏輯關(guān)系為 "一對一" 的數(shù)據(jù),但由于它們比較特殊,因此將其單獨作為一章,做重點講解
    2022-04-04
  • C++選擇文件夾代碼的封裝

    C++選擇文件夾代碼的封裝

    這篇文章主要介紹了C++選擇文件夾代碼的封裝,實例展示了將選擇文件夾功能代碼封裝為一個類并對其進行實例化調(diào)用的過程,對于學習C++程序設(shè)計有不錯的參考價值,需要的朋友可以參考下
    2014-10-10
  • C語言排序算法之選擇排序(直接選擇排序,堆排序)

    C語言排序算法之選擇排序(直接選擇排序,堆排序)

    這篇文章主要介紹了C語言排序算法之選擇排序(直接選擇排序,堆排序),堆排序使用堆來選數(shù),效率高很多,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-07-07

最新評論