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

LeetCode·每日一題·1177. 構(gòu)建回文串檢測(cè)·前綴和

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode·每日一題·1177. 構(gòu)建回文串檢測(cè)·前綴和。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

作者:小迅
鏈接:https://leetcode.cn/problems/can-make-palindrome-from-substring/solutions/2309940/qian-zhui-he-zhu-shi-chao-ji-xiang-xi-by-n3ps/
來(lái)源:力扣(LeetCode)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

題目

LeetCode·每日一題·1177. 構(gòu)建回文串檢測(cè)·前綴和

?

思路

題意 -> 給定一個(gè)字符串,選擇其中任意位置 L-R,可以重排任意字符和替換任意 K 個(gè)字符,使得 L-R 子串為 回文串,能滿足要求則為 TRUE,不能則為 FALSE。

要求轉(zhuǎn)換為 回文串,什么是回文串呢?形如 abccba 則為回文串,其中存在一個(gè)特點(diǎn)為 相同字符為偶數(shù) 或者 在前者基礎(chǔ)上只有一個(gè)字符出現(xiàn)次數(shù)為奇數(shù)。

那么現(xiàn)在就簡(jiǎn)單了,題意只關(guān)心能否到達(dá)要求,不關(guān)心其具體字符。那么就可以將給定字符串轉(zhuǎn)換為 字符出現(xiàn)次數(shù)串,判斷一個(gè)子串能否轉(zhuǎn)換為回文串 -> 判斷將當(dāng)前位置中字符出現(xiàn)次數(shù)是否滿足上述要求

那么如何轉(zhuǎn)換到上述題意要求呢? 給定一個(gè)子串:

  • 相同字符出現(xiàn)的次數(shù)如果為偶數(shù)的話,那么這個(gè)字符就不需要使用 修改次數(shù)
  • 相同字符出現(xiàn)的次數(shù)如果為奇數(shù)的話:
    • 只有一個(gè)字符出現(xiàn)奇數(shù)次數(shù), 不需要使用 修改次數(shù)
    • 多個(gè)字符出現(xiàn)奇數(shù)次數(shù)的話, 需要使用 出現(xiàn)次數(shù) / 2 次 修改次數(shù),將多余的字符轉(zhuǎn)換為 偶數(shù)次出現(xiàn)

如何統(tǒng)計(jì)每一個(gè)位置字符的出現(xiàn)次數(shù)呢?

  • 使用數(shù)組記錄每一個(gè)子串的字符出現(xiàn)次數(shù)
  • 因?yàn)樽址挥?6個(gè),那么可以使用一個(gè)int型位記錄出現(xiàn)次數(shù) 0 表示偶數(shù)次,1表示奇數(shù)次
  • 可以使用前綴和,任意位置可以通過(guò)左右兩個(gè)子串狀態(tài)相差得出當(dāng)前狀態(tài)

代碼注釋超級(jí)詳細(xì)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-486249.html

代碼


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */

bool* canMakePaliQueries(char * s, int** queries, int queriesSize, int* queriesColSize, int* returnSize) {
    int n = strlen(s);
    int* count = (int*)malloc((n + 1) * sizeof(int));//二進(jìn)制代替數(shù)組
    memset(count, 0, (n + 1) * sizeof(int));//初始化
    for (int i = 0; i < n; i++) {//前綴和枚舉
        // ^ 為不帶進(jìn)位的加法
        count[i + 1] = count[i] ^ (1 << (s[i] - 'a'));//記錄整體狀態(tài)
    }
    bool* res = (bool*)malloc(queriesSize * sizeof(bool));//返回值數(shù)組
    for (int i = 0; i < queriesSize; i++) {//枚舉子串
        int l = queries[i][0], r = queries[i][1], k = queries[i][2];
        //根據(jù)上述表示,大于13則可以能滿足轉(zhuǎn)換要求
        //if (k >= 13) {res[i] = true; continue;}
        // 由于沒(méi)有負(fù)值, 那么 0 - 1 等價(jià)于 0 + 1
        int bits = 0, x = count[r + 1] ^ count[l];//相差得出當(dāng)前狀態(tài)
        while (x > 0) {//求當(dāng)奇數(shù)出現(xiàn)次數(shù)
            x &= x - 1;
            bits++;
        }
        res[i] = bits / 2 <= k;//保存有效值
    }
    *returnSize = queriesSize;
    free(count);
    return res;
}



作者:小迅
鏈接:https://leetcode.cn/problems/can-make-palindrome-from-substring/solutions/2309940/qian-zhui-he-zhu-shi-chao-ji-xiang-xi-by-n3ps/
來(lái)源:力扣(LeetCode)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

到了這里,關(guān)于LeetCode·每日一題·1177. 構(gòu)建回文串檢測(cè)·前綴和的文章就介紹完了。如果您還想了解更多內(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)文章

  • 【五一創(chuàng)作】( 字符串) 409. 最長(zhǎng)回文串 ——【Leetcode每日一題】

    【五一創(chuàng)作】( 字符串) 409. 最長(zhǎng)回文串 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 給定一個(gè)包含大寫字母和小寫字母的字符串 s ,返回 通過(guò)這些字母構(gòu)造成的 最長(zhǎng)的回文串 。 在構(gòu)造過(guò)程中,請(qǐng)注意 區(qū)分大小寫 。比如 \\\"Aa\\\" 不能當(dāng)做一個(gè)回文字符串。 示例 1: 輸入:s = “abccccdd” 輸出:7 解釋: 我們可以構(gòu)造的最長(zhǎng)的回文串是\\\"dccaccd\\\", 它的長(zhǎng)度是

    2024年02月01日
    瀏覽(19)
  • ( “樹(shù)” 之 Trie) 208. 實(shí)現(xiàn) Trie (前綴樹(shù)) ——【Leetcode每日一題】

    ( “樹(shù)” 之 Trie) 208. 實(shí)現(xiàn) Trie (前綴樹(shù)) ——【Leetcode每日一題】

    知識(shí)點(diǎn)回顧 : Trie ,又稱 前綴樹(shù) 或 字典樹(shù) ,用于判斷字符串是否存在或者是否具有某種字符串前綴。 難度:中等 Trie (發(fā)音類似 “ try ”)或者說(shuō) 前綴樹(shù) 是一種樹(shù)形數(shù)據(jù)結(jié)構(gòu),用于高效地存儲(chǔ)和檢索字符串?dāng)?shù)據(jù)集中的鍵。這一數(shù)據(jù)結(jié)構(gòu)有相當(dāng)多的應(yīng)用情景,例如自動(dòng)補(bǔ)

    2024年02月01日
    瀏覽(15)
  • 2023年7月2日l(shuí)eetcode每日一題打卡——125.驗(yàn)證回文串

    2023年7月2日l(shuí)eetcode每日一題打卡——125.驗(yàn)證回文串

    125. 驗(yàn)證回文串 - 力扣(LeetCode) 如果在將所有大寫字符轉(zhuǎn)換為小寫字符、并移除所有非字母數(shù)字字符之后,短語(yǔ)正著讀和反著讀都一樣。則可以認(rèn)為該短語(yǔ)是一個(gè)? 回文串 。 字母和數(shù)字都屬于字母數(shù)字字符。 給你一個(gè)字符串 s,如果它是 回文串 ,返回 true ;否則,返回

    2024年02月12日
    瀏覽(19)
  • 每日一題——LeetCode1455.檢查單詞是否為句中其他單詞的前綴

    每日一題——LeetCode1455.檢查單詞是否為句中其他單詞的前綴

    方法一 js函數(shù)slice() ?將字符串按空格符分割為單詞數(shù)組,記searchWord的長(zhǎng)度為n,分割每個(gè)單詞的前n位看是否和searchWord匹配 消耗時(shí)間和內(nèi)存情況: 方法二 雙指針: 來(lái)自leetcode官方題解 鏈接:1455.檢查單詞是否為句中其他單詞的前綴 使用 start 記錄單詞的起始,end記錄單詞結(jié)尾

    2024年02月19日
    瀏覽(24)
  • 2023-06-14 LeetCode每日一題(二進(jìn)制字符串前綴一致的次數(shù))

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個(gè)長(zhǎng)度為 n 、下標(biāo)從 1 開(kāi)始的二進(jìn)制字符串,所有位最開(kāi)始都是 0 。我們會(huì)按步翻轉(zhuǎn)該二進(jìn)制字符串的所有位(即,將 0 變?yōu)?1)。 給你一個(gè)下標(biāo)從 1 開(kāi)始的整數(shù)數(shù)組 flips ,其中 flips[i] 表示對(duì)應(yīng)下標(biāo) i 的位將會(huì)在第 i 步翻轉(zhuǎn)。 二進(jìn)制字符串 前綴

    2024年02月08日
    瀏覽(98)
  • 每日一題411數(shù)組中兩個(gè)數(shù)的最大異或值(哈希表、前綴樹(shù):實(shí)現(xiàn)前綴樹(shù))

    LeetCode題目:https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/ ??本題使用哈希表方法主要運(yùn)用到一個(gè)定理:異或滿足算法交換律。即如果a^b = c,那么必然 b ^ c = a。且數(shù)組中的元素都在 [ 0 , 2 31 ) [0,2^{31}) [ 0 , 2 31 ) ,因此可以確定數(shù)值的最高位是30位。 ??因此,可以假設(shè)

    2024年02月05日
    瀏覽(19)
  • leetcode每日一題44

    圖論 dfs/bfs dfs代碼框架 思路:本題要求找到被x圍繞的陸地,所以邊界的陸地O肯定不符合條件。那么我們只要從周邊找到陸地O然后 通過(guò) dfs或者bfs 將周邊靠陸地且相鄰的陸地O都變成A,然后再去重新遍歷地圖的時(shí)候,把剩下的O變成X,再把所有的A變成O。 確認(rèn)遞歸函數(shù),參數(shù)

    2024年01月19日
    瀏覽(28)
  • LeetCode每日一題之 復(fù)寫0

    LeetCode每日一題之 復(fù)寫0

    目錄 題目介紹: 算法原理: 特殊位置處理: 代碼實(shí)現(xiàn): 題目鏈接:. - 力扣(LeetCode) 這種對(duì)數(shù)組元素進(jìn)行修改,移動(dòng)的題目我們?nèi)匀豢梢允褂秒p指針?lè)?,不過(guò)我們按照常規(guī)思路從左到右處理數(shù)組,不難發(fā)現(xiàn)如下這種問(wèn)題: 當(dāng)cur指向1時(shí),讓dest下一個(gè)元素復(fù)寫cur指向的元素

    2024年04月23日
    瀏覽(27)
  • 每日一題(LeetCode)----二分查找(一)

    給定一個(gè)排序數(shù)組和一個(gè)目標(biāo)值,在數(shù)組中找到目標(biāo)值,并返回其索引。如果目標(biāo)值不存在于數(shù)組中,返回它將會(huì)被按順序插入的位置。 請(qǐng)必須使用時(shí)間復(fù)雜度為 O(log n) 的算法。 示例 1: 示例 2: 示例 3: 提示: 1 = nums.length = 104 -104 = nums[i] = 104 nums 為 無(wú)重復(fù)元素 的 升序 排列數(shù)

    2024年02月08日
    瀏覽(25)
  • 【LeetCode每日一題】——566.重塑矩陣

    【LeetCode每日一題】——566.重塑矩陣

    矩陣 簡(jiǎn)單 566.重塑矩陣 在 MATLAB 中,有一個(gè)非常有用的函數(shù) reshape ,它可以將一個(gè) m x n 矩陣重塑為另一個(gè)大小不同(r x c)的新矩陣,但保留其原始數(shù)據(jù)。 給你一個(gè)由二維數(shù)組 mat 表示的 m x n 矩陣,以及兩個(gè)正整數(shù) r 和 c ,分別表示想要的重構(gòu)的矩陣的行數(shù)和列數(shù)。 重構(gòu)后

    2024年02月14日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包