国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【每日一題】構(gòu)造限制重復(fù)的字符串

這篇具有很好參考價值的文章主要介紹了【每日一題】構(gòu)造限制重復(fù)的字符串。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Tag

【貪心】【字符串】【2024-01-13】


題目來源

2182. 構(gòu)造限制重復(fù)的字符串

【每日一題】構(gòu)造限制重復(fù)的字符串,LeetCode每日一題,貪心,字符串,2024-01-13

解題思路

方法一:貪心

思路

解題思想比較簡單,利用貪心思想,每次選擇當(dāng)前剩余字符串中字典序最大的字符加到答案字符串末尾,如果答案字符串末尾的字符已經(jīng)連續(xù)出現(xiàn)了 repeatLimit 次,則將字典序次大的字符加到答案字符串,隨后繼續(xù)選擇當(dāng)前剩余字符串的字典序最大的字符加到字符串末尾,直至使用完字符或沒有新的字符可以合法加入。

想法比較簡單,但實現(xiàn)起來稍微有點難度,具體實現(xiàn)見下方算法部分。

算法

const int N = 26;
class Solution {
public:
    string repeatLimitedString(string s, int repeatLimit) {
        vector<int> count(N);
        // 統(tǒng)計每個字符出現(xiàn)次數(shù)
        for (char c : s) {
            count[c - 'a']++;
        }
        string ret;
        int m = 0;
        for (int i = N - 1, j = N - 2; i >= 0 && j >= 0;) {
            // 當(dāng)前字符已經(jīng)填完,填入后面的字符,重置 m
            if (count[i] == 0) { 
                m = 0;
                i--;  
            } 
            // 當(dāng)前字符未超過限制
            else if (m < repeatLimit) { 
                count[i]--;
                ret.push_back('a' + i);
                m++;
            } 
            // 當(dāng)前字符已經(jīng)超過限制,查找可填入的其他字符
            else if (j >= i || count[j] == 0) { 
                j--;
            } 
            // 當(dāng)前字符已經(jīng)超過限制,填入其他字符,并且重置 m
            else { 
                count[j]--;
                ret.push_back('a' + j);
                m = 0;
            }
        }
        return ret;
    }
};

復(fù)雜度分析

時間復(fù)雜度: O ( n + ∑ ) O(n+ \sum) O(n+) n n n 為字符串 s 的長度, ∑ = 26 \sum = 26 =26 為小寫字符集的長度。

空間復(fù)雜度: O ( ∑ ) O(\sum) O(∑)。

寫在最后

如果您發(fā)現(xiàn)文章有任何錯誤或者對文章有任何疑問,歡迎私信博主或者在評論區(qū)指出 ??????。

如果大家有更優(yōu)的時間、空間復(fù)雜度的方法,歡迎評論區(qū)交流。

最后,感謝您的閱讀,如果有所收獲的話可以給我點一個 ?? 哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-813324.html

到了這里,關(guān)于【每日一題】構(gòu)造限制重復(fù)的字符串的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • (棧和隊列) 1047. 刪除字符串中的所有相鄰重復(fù)項 ——【Leetcode每日一題】

    (棧和隊列) 1047. 刪除字符串中的所有相鄰重復(fù)項 ——【Leetcode每日一題】

    難度:簡單 給出由小寫字母組成的字符串 S , 重復(fù)項刪除操作 會選擇兩個相鄰且相同的字母,并刪除它們。 在 S 上反復(fù)執(zhí)行重復(fù)項刪除操作,直到無法繼續(xù)刪除。 在完成所有重復(fù)項刪除操作后返回最終的字符串。答案保證唯一。 示例: 輸入 :“abbaca” 輸出 :“ca” 解釋

    2024年02月08日
    瀏覽(25)
  • 【LeetCode每日一題】2645. 構(gòu)造有效字符串的最少插入數(shù)(計算組數(shù)+動態(tài)規(guī)劃+考慮相鄰字母)

    【LeetCode每日一題】2645. 構(gòu)造有效字符串的最少插入數(shù)(計算組數(shù)+動態(tài)規(guī)劃+考慮相鄰字母)

    2024-1-11 2645. 構(gòu)造有效字符串的最少插入數(shù) 方法一:計算組數(shù) 1.用count統(tǒng)計,能構(gòu)成幾組abc 2.如果當(dāng)前字符大于之前字符,說明還在組內(nèi),不更新 3.如果當(dāng)前字符小于等于之前字符,說明不是同一組的abc,組數(shù)更新 4.最終返回值:組數(shù)*3,再減去原本的字符數(shù),就是要插入的次數(shù)

    2024年01月17日
    瀏覽(23)
  • 力扣2182.構(gòu)造限制重復(fù)的字符串

    力扣2182.構(gòu)造限制重復(fù)的字符串

    ?思路:先記錄每個字符的出現(xiàn)次數(shù),構(gòu)建一個新字符串,從尾取字符,每取一個該字符個數(shù)-1,若該字符已經(jīng)取到有repeatLimit個,則遞歸取次大的字符,并對應(yīng)字符個數(shù)-1,若沒有次大字符了,則直接返回 代碼: ?

    2024年02月01日
    瀏覽(22)
  • ( 字符串) 205. 同構(gòu)字符串 ——【Leetcode每日一題】

    ( 字符串) 205. 同構(gòu)字符串 ——【Leetcode每日一題】

    難度:簡單 給定兩個字符串 s 和 t ,判斷它們是否是同構(gòu)的。 如果 s 中的字符可以按某種映射關(guān)系替換得到 t ,那么這兩個字符串是同構(gòu)的。 每個出現(xiàn)的字符都應(yīng)當(dāng)映射到另一個字符,同時不改變字符的順序。不同字符不能映射到同一個字符上,相同字符只能映射到同一個

    2024年02月02日
    瀏覽(65)
  • LeetCode·每日一題·415. 字符串相加·模擬

    LeetCode·每日一題·415. 字符串相加·模擬

    作者:小迅 鏈接:https://leetcode.cn/problems/add-strings/solutions/2347085/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-fges/ 來源:力扣(LeetCode) 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 ? 題意 - 給定二個字符串,計算它們的和并同樣以字符串形式返回。 直接從

    2024年02月16日
    瀏覽(22)
  • (字符串) 844. 比較含退格的字符串——【Leetcode每日一題】

    (字符串) 844. 比較含退格的字符串——【Leetcode每日一題】

    難度:簡單 給定 s 和 t 兩個字符串,當(dāng)它們分別被輸入到空白的文本編輯器后,如果兩者相等,返回 true 。 # 代表退格字符。 注意 :如果對空文本輸入退格字符,文本繼續(xù)為空。 示例 1: 輸入:s = “ab#c”, t = “ad#c” 輸出:true 解釋:s 和 t 都會變成 “ac”。 示例 2: 輸入

    2024年02月11日
    瀏覽(19)
  • (字符串 ) 劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串 ——【Leetcode每日一題】

    (字符串 ) 劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串 ——【Leetcode每日一題】

    難度:簡單 字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個字符轉(zhuǎn)移到字符串的尾部。請定義一個函數(shù)實現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串\\\"abcdefg\\\"和數(shù)字2,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果\\\"cdefgab\\\"。 示例 1: 輸入: s = “abcdefg”, k = 2 輸出: “cdefgab” 示例 2:

    2024年02月08日
    瀏覽(24)
  • (貪心) 1221. 分割平衡字符串 ——【Leetcode每日一題】

    (貪心) 1221. 分割平衡字符串 ——【Leetcode每日一題】

    難度:簡單 平衡字符串 中, \\\'L\\\' 和 \\\'R\\\' 字符的數(shù)量是相同的。 給你一個平衡字符串 s ,請你將它分割成盡可能多的子字符串,并滿足: 每個子字符串都是平衡字符串。 返回可以通過分割得到的平衡字符串的 最大數(shù)量 。 示例 1: 輸入:s = “RLRRLLRLRL” 輸出:4 解釋:s 可以分

    2024年02月11日
    瀏覽(18)
  • ( 字符串) 647. 回文子串 ——【Leetcode每日一題】

    ( 字符串) 647. 回文子串 ——【Leetcode每日一題】

    難度:中等 給你一個字符串 s ,請你統(tǒng)計并返回這個字符串中 回文子串 的數(shù)目。 回文字符串 是正著讀和倒過來讀一樣的字符串。 子字符串 是字符串中的由連續(xù)字符組成的一個序列。 具有不同開始位置或結(jié)束位置的子串,即使是由相同的字符組成,也會被視作不同的子串

    2024年02月01日
    瀏覽(45)
  • (字符串) 925. 長按鍵入 ——【Leetcode每日一題】

    (字符串) 925. 長按鍵入 ——【Leetcode每日一題】

    難度:簡單 你的朋友正在使用鍵盤輸入他的名字 name 。偶爾,在鍵入字符 c 時,按鍵可能會被長按,而字符可能被輸入 1 次或多次。 你將會檢查鍵盤輸入的字符 typed 。如果它對應(yīng)的可能是你的朋友的名字(其中一些字符可能被長按),那么就返回 True 。 示例 1: 輸入:na

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包