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

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

這篇具有很好參考價(jià)值的文章主要介紹了【LeetCode每日一題】2645. 構(gòu)造有效字符串的最少插入數(shù)(計(jì)算組數(shù)+動(dòng)態(tài)規(guī)劃+考慮相鄰字母)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

2024-1-11

2645. 構(gòu)造有效字符串的最少插入數(shù)

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

方法一:計(jì)算組數(shù)

1.用count統(tǒng)計(jì),能構(gòu)成幾組abc

2.如果當(dāng)前字符大于之前字符,說(shuō)明還在組內(nèi),不更新

3.如果當(dāng)前字符小于等于之前字符,說(shuō)明不是同一組的abc,組數(shù)更新

4.最終返回值:組數(shù)*3,再減去原本的字符數(shù),就是要插入的次數(shù)

    //2645. 構(gòu)造有效字符串的最少插入數(shù)---計(jì)算組數(shù)
    public int addMinimum2(String word) {
        int n = word.length();
        int count = 1;
        //最終構(gòu)成abc的組數(shù)
        for (int i = 1; i < n; i++) {
            if (word.charAt(i - 1) >= word.charAt(i)) {
                //當(dāng)前字符小于等于之前字符
                count++;
                //組數(shù)加一
            }
        }
        return count*3-n;
        //返回最終構(gòu)成abc的總數(shù)-原本字符,即為要插入的次數(shù)
    }
方法二:動(dòng)態(tài)規(guī)劃

1.從1開始,d[i]為前i個(gè)字符拼成abc需要的最小插入數(shù)

2.情況一:word[i]單獨(dú)存在于一組abc中,需要插兩次,才能組成abc.插入次數(shù)為之前的次數(shù)+2

3.情況二:當(dāng)前字符比前一個(gè)字符大,需要插一次,就可以組成abc.修改當(dāng)前插入次數(shù)為:之前的次數(shù)-1,因?yàn)橹安迦氲膬纱沃幸呀?jīng)包含了當(dāng)前字符。

    public int addMinimum(String word) {
        int n = word.length();
        int[] d = new int[n + 1];
        //d[]數(shù)組用來(lái)統(tǒng)計(jì),1到n的插入次數(shù)
        //從1開始,d[i]為前i個(gè)字符拼成abc需要的最小插入數(shù)。
        for (int i = 1; i <= n; i++) {
            d[i] = d[i - 1] + 2;
            //word[i]單獨(dú)存在于一組abc中,在之前情況的基礎(chǔ)上+2. eg: a+bc / b+ac / c+ab
            if (i > 1 && word.charAt(i - 1) > word.charAt(i - 2)) {
                //如果當(dāng)前字符比前一個(gè)字符大,eg:ab/ ac / bc
                d[i] = d[i - 1] - 1;
                //當(dāng)前字符和之前的字符在同一個(gè)abc中,重新覆蓋d[i],前一個(gè)位置的插入數(shù)-1
            }
        }
        return d[n];
    }

方法三: 考慮相鄰字母

1.設(shè)當(dāng)前字符為x,前一個(gè)字符為y,

2.x大于y的情況:x-y-1

3.x小于等于y的情況:(x-y-1+3)mod 3 ,將計(jì)算的結(jié)果控制在0-2之間

4.開頭的單獨(dú)一個(gè)字符:word[0]-‘a(chǎn)’ ,結(jié)尾的一個(gè)字符:‘c’-word[n-1],合并為word[0]-word[n-1]+2

    public int addMinimum3(String word) {
        int n = word.length();
        int res = word.charAt(0) - word.charAt(n - 1) + 2;
        //合并處理開頭和結(jié)尾的情況
        for (int i = 1; i < n; i++) {
            res += (word.charAt(i) - word.charAt(i - 1) + 2) % 3;
        }
        return res;
    }

1-11 生日快樂

點(diǎn)擊移步博客主頁(yè),歡迎光臨~

【LeetCode每日一題】2645. 構(gòu)造有效字符串的最少插入數(shù)(計(jì)算組數(shù)+動(dòng)態(tài)規(guī)劃+考慮相鄰字母),LeetCode,leetcode,動(dòng)態(tài)規(guī)劃,代理模式文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-796434.html

到了這里,關(guān)于【LeetCode每日一題】2645. 構(gòu)造有效字符串的最少插入數(shù)(計(jì)算組數(shù)+動(dòng)態(tài)規(guī)劃+考慮相鄰字母)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 2645. 構(gòu)造有效字符串的最少插入數(shù)

    給你一個(gè)字符串? word ?,你可以向其中任何位置插入 \\\"a\\\"、\\\"b\\\" 或 \\\"c\\\" 任意次,返回使? word ? 有效 ?需要插入的最少字母數(shù)。 如果字符串可以由 \\\"abc\\\" 串聯(lián)多次得到,則認(rèn)為該字符串? 有效 ?。 示例 1: 示例 2: 示例 3: 提示: 1 = word.length = 50 word ?僅由字母 \\\"a\\\"、\\\"b\\\" 和 \\\"c\\\" 組成

    2024年01月20日
    瀏覽(18)
  • 【LeetCode每日一題】2182. 構(gòu)造限制重復(fù)的字符串

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

    2024-1-13 2182. 構(gòu)造限制重復(fù)的字符串 思路: 按照字符出現(xiàn)次數(shù)從高到低的順序進(jìn)行重復(fù),通過(guò)維護(hù)一個(gè)指針 j 來(lái)尋找下一個(gè)非零出現(xiàn)次數(shù)的字母。同時(shí),利用 StringBuilder 對(duì)象可以高效地構(gòu)建字符串,避免頻繁的字符串拼接操作 首先,創(chuàng)建一個(gè)長(zhǎng)度為26的數(shù)組 cnt ,用于統(tǒng)計(jì)字

    2024年01月18日
    瀏覽(25)
  • 【LeetCode題解】2645. 構(gòu)造有效字符串的最少插入數(shù)(計(jì)算組數(shù)+動(dòng)態(tài)規(guī)劃+考慮相鄰字母)+2085. 統(tǒng)計(jì)出現(xiàn)過(guò)一次的公共字符串(哈希表)+2807. 在鏈表中插入最大公約數(shù)

    【LeetCode題解】2645. 構(gòu)造有效字符串的最少插入數(shù)(計(jì)算組數(shù)+動(dòng)態(tài)規(guī)劃+考慮相鄰字母)+2085. 統(tǒng)計(jì)出現(xiàn)過(guò)一次的公共字符串(哈希表)+2807. 在鏈表中插入最大公約數(shù)

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

    2024年04月12日
    瀏覽(95)
  • 【每日一題】構(gòu)造限制重復(fù)的字符串

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

    【貪心】【字符串】【2024-01-13】 2182. 構(gòu)造限制重復(fù)的字符串 思路 解題思想比較簡(jiǎn)單,利用貪心思想,每次選擇當(dāng)前剩余字符串中字典序最大的字符加到答案字符串末尾,如果答案字符串末尾的字符已經(jīng)連續(xù)出現(xiàn)了 repeatLimit 次,則將字典序次大的字符加到答案字符串,隨后

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

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

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

    2024年02月02日
    瀏覽(65)
  • (字符串 ) 459. 重復(fù)的子字符串——【Leetcode每日一題】

    (字符串 ) 459. 重復(fù)的子字符串——【Leetcode每日一題】

    難度:簡(jiǎn)單 給定一個(gè)非空的字符串 s ,檢查是否可以通過(guò)由它的一個(gè)子串重復(fù)多次構(gòu)成。 示例 1: 輸入: s = “abab” 輸出: true 解釋: 可由子串 “ab” 重復(fù)兩次構(gòu)成。 示例 2: 輸入: s = “aba” 輸出: false 示例 3: 輸入: s = “abcabcabcabc” 輸出: true 解釋: 可由子串 “abc” 重復(fù)四次構(gòu)

    2024年02月07日
    瀏覽(22)
  • 【力扣·每日一題】2182.構(gòu)造限制重復(fù)的字符串(模擬 貪心 優(yōu)先隊(duì)列 C++ Go)

    【力扣·每日一題】2182.構(gòu)造限制重復(fù)的字符串(模擬 貪心 優(yōu)先隊(duì)列 C++ Go)

    題目鏈接 給你一個(gè)字符串 s 和一個(gè)整數(shù) repeatLimit ,用 s 中的字符構(gòu)造一個(gè)新字符串 repeatLimitedString ,使任何字母 連續(xù) 出現(xiàn)的次數(shù)都不超過(guò) repeatLimit 次。你不必使用 s 中的全部字符。 返回 字典序最大的 repeatLimitedString 。 如果在字符串 a 和 b 不同的第一個(gè)位置,字符串 a 中

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

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

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

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

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

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

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

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

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

    2024年02月08日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包