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

leetcode原題 一次編輯(判定字符串是否只需要一次(或者零次)編輯)

這篇具有很好參考價(jià)值的文章主要介紹了leetcode原題 一次編輯(判定字符串是否只需要一次(或者零次)編輯)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

題目:

字符串有三種編輯操作:插入一個(gè)英文字符、刪除一個(gè)英文字符或者替換一個(gè)英文字符。 給定兩個(gè)字符串,編寫一個(gè)函數(shù)判定它們是否只需要一次(或者零次)編輯。

輸入:?
first = "pale"
second = "ple"
輸出: True

解題思路:

本題可以分為以下幾種情況來(lái)處理:

1.兩個(gè)字符串長(zhǎng)度相差=1,那么只需要判斷哪個(gè)字符串更長(zhǎng),再判斷將短字符串插入一個(gè)字符串后,是否符合條件

2.兩個(gè)字符串長(zhǎng)度相等,那么只能進(jìn)行替換,不能插入

3.兩個(gè)字符串長(zhǎng)度相差>1,那么一次編輯是無(wú)法使兩個(gè)字符串相等的,直接返回false即可

源代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-636783.html

class Solution {
public:
    bool oneEditAway(string first, string second) {
        int len1=first.size();
        int len2=second.size();
        //第一個(gè)字符串比第二個(gè)字符串長(zhǎng)度多1個(gè)字符
        if(len1-len2==1)
        {
            //給第二個(gè)字符串插入一個(gè)字符,判斷是否跟第一個(gè)字符串相等
            return insert(first,second);
        }
        //第二個(gè)字符串比第一個(gè)字符串長(zhǎng)度多1個(gè)字符
        else if(len2-len1==1)
        {
            //給第一個(gè)字符串插入一個(gè)字符,判斷是否跟第二個(gè)字符串相等
            return insert(second,first);
        }
        //兩個(gè)字符串長(zhǎng)度相等,那么只能通過(guò)替換實(shí)現(xiàn),不能進(jìn)行插入
        else if(len1==len2)
        {
            return replace(first,second);
        }
        //剩下的情況:兩個(gè)字符串長(zhǎng)度相差大于1,不能只通過(guò)一次編輯實(shí)現(xiàn)
        else
        {
            return false;
        }
    }
    //插入函數(shù)
    bool insert(string Long, string Short)
    {
        int i,j=0;
        while(i<Long.size()&&j<Short.size())
        {
            //如果兩個(gè)字符相等
            if(Long[i]==Short[j])
            {
                //短字符下標(biāo)繼續(xù)走
                j++;
            }
            i++;
            //當(dāng)下標(biāo)i和j差值大于1時(shí),說(shuō)明 不止需要插入一個(gè)字符
            if(i-j>1) return false;
        }
        return true;
    }
    //替換函數(shù)
    bool replace(string first, string second)
    {
        int i=0;
        int flag=0;//標(biāo)記是否已經(jīng)覆蓋過(guò)
        while(i<first.size())
        {
            if(first[i]!=second[i])
            {
                //如果兩個(gè)字符不相等的同時(shí),flag還大于0,說(shuō)明前面已經(jīng)替換過(guò)一次了,直接返回false
                if(flag>0)
                {
                    return false;
                }
                //若能替換,則flag++
                flag++;
            }
            i++;
        }
        return true;
    }
};

到了這里,關(guān)于leetcode原題 一次編輯(判定字符串是否只需要一次(或者零次)編輯)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 華為OD機(jī)試真題 Java 實(shí)現(xiàn)【字符串序列判定】【2022Q4 100分】,附詳細(xì)解題思路

    華為OD機(jī)試真題 Java 實(shí)現(xiàn)【字符串序列判定】【2022Q4 100分】,附詳細(xì)解題思路

    輸入兩個(gè)字符串a(chǎn)和b,都只包含英文小寫字母。 a長(zhǎng)度=100,b長(zhǎng)度=500,000 。 判定a是否是b的有效子串。 判定規(guī)則: a中的每個(gè)字符在b中都能找到(可以不連續(xù)),且a在b中字符的前后順序與a中順序要保持一致。 (例如, a=”qwt” 是 b=”qwerty” 的一個(gè)子序列且有效字符是q、w、

    2024年02月08日
    瀏覽(17)
  • 【每日撓頭算法題(2)】壓縮字符串|僅執(zhí)行一次字符串交換能否使兩個(gè)字符串相等

    【每日撓頭算法題(2)】壓縮字符串|僅執(zhí)行一次字符串交換能否使兩個(gè)字符串相等

    點(diǎn)我直達(dá)~ 使用雙指針?lè)?大致過(guò)程如下: 使用雙指針,分別讀(read),寫(write)指針,讀指針不斷向后走,當(dāng)read指針走到最后位置處時(shí),或read和read的下一個(gè)位置與當(dāng)前位置不相等時(shí),說(shuō)明該read指針走到了某一串相同子串的最后位置處。 此時(shí)write指針開(kāi)始記錄具體的字符

    2024年02月08日
    瀏覽(30)
  • MATLAB字符串編輯常用代碼

    MATLAB字符串編輯常用代碼

    1.字符串賦值 % 字符串賦值 s=\\\'abcdefg\\\' 2.字符串屬性和操作 (1)獲取字符串長(zhǎng)度?? s=\\\'abcdefg\\\';% 字符串賦值 length(a) ?% 獲取字符串長(zhǎng)度? (2)連接字符串 % 連接兩個(gè)字符串,每個(gè)字符串最右邊的空格被裁切? s1=\\\'a\\\' s2=\\\'b\\\' s3=strcat(s1,s2) 3.字符串比較 % strcmp ? ?比較兩個(gè)字符串是否完全相等

    2024年01月24日
    瀏覽(17)
  • ( 字符串) 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)
  • LeetCode_字符串_簡(jiǎn)單_415.字符串相加

    給定兩個(gè)字符串形式的非負(fù)整數(shù) num1 和num2,計(jì)算它們的和并同樣以字符串形式返回。 你不能使用任何內(nèi)建的用于處理大整數(shù)的庫(kù)(比如 BigInteger), 也不能直接將輸入的字符串轉(zhuǎn)換為整數(shù)形式。 示例 1: 輸入:num1 = “11”, num2 = “123” 輸出:“134” 示例 2: 輸入:num1 = “

    2024年02月01日
    瀏覽(28)
  • 力扣2085統(tǒng)計(jì)出現(xiàn)過(guò)一次的公共字符串

    力扣2085統(tǒng)計(jì)出現(xiàn)過(guò)一次的公共字符串 給你兩個(gè)字符串?dāng)?shù)組? words1 ?和? words2 ?,請(qǐng)你返回在兩個(gè)字符串?dāng)?shù)組中? 都恰好出現(xiàn)一次 ?的字符串的數(shù)目。 思路一. 可以使用兩個(gè)map分別存儲(chǔ)兩個(gè)字符串?dāng)?shù)組中所有字符串出現(xiàn)的數(shù)量,最后統(tǒng)計(jì)兩個(gè)map中value均為1的字符串。 思路二

    2024年01月16日
    瀏覽(23)
  • 2085. 統(tǒng)計(jì)出現(xiàn)過(guò)一次的公共字符串(Java)

    給你兩個(gè)字符串?dāng)?shù)組 words1 和 words2 ,請(qǐng)你返回在兩個(gè)字符串?dāng)?shù)組中 都恰好出現(xiàn)一次 的字符串的數(shù)目。 words1 = [“l(fā)eetcode”,“is”,“amazing”,“as”,“is”], words2 = [“amazing”,“l(fā)eetcode”,“is”] 2 解釋: “l(fā)eetcode” 在兩個(gè)數(shù)組中都恰好出現(xiàn)一次,計(jì)入答案。 “amazing” 在兩個(gè)數(shù)

    2024年01月17日
    瀏覽(27)
  • day-07 統(tǒng)計(jì)出現(xiàn)過(guò)一次的公共字符串

    day-07 統(tǒng)計(jì)出現(xiàn)過(guò)一次的公共字符串

    思路 用哈希表統(tǒng)計(jì)words1和words2中各個(gè)字符串的出現(xiàn)次數(shù),次數(shù)皆為1的字符串符合題意 解題方法 //用于存儲(chǔ)words1中各個(gè)字符串的出現(xiàn)次數(shù) HashMapString,Integer hashMap1=new HashMap(); //用于存儲(chǔ)words2中各個(gè)字符串的出現(xiàn)次數(shù) HashMapString,Integer hashMap2=new HashMap(); //如果words1中某個(gè)字符串出

    2024年01月16日
    瀏覽(24)
  • LeetCode 2788.按分隔符拆分字符串:模擬(字符串處理)

    力扣題目鏈接:https://leetcode.cn/problems/split-strings-by-separator/ 給你一個(gè)字符串?dāng)?shù)組 words 和一個(gè)字符 separator ,請(qǐng)你按 separator 拆分 words 中的每個(gè)字符串。 返回一個(gè)由拆分后的新字符串組成的字符串?dāng)?shù)組, 不包括空字符串 。 注意 separator 用于決定拆分發(fā)生的位置,但它不包含在

    2024年01月21日
    瀏覽(28)
  • (字符串 ) 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)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包