[Leetcode] 66. One Edit Distance

題目

Given two strings S and T, determine if they are both one edit distance apart.

解題之法

class Solution {
public:
    bool isOneEditDistance(string s, string t) {
        if (s.size() < t.size()) swap(s, t);
        int m = s.size(), n = t.size(), diff = m - n;
        if (diff >= 2) return false;
        else if (diff == 1) {
            for (int i = 0; i < n; ++i) {
                if (s[i] != t[i]) {
                    return s.substr(i + 1) == t.substr(i);
                }
            }
            return true;
        } else {
            int cnt = 0;
            for (int i = 0; i < m; ++i) {
                if (s[i] != t[i]) ++cnt;
            }
            return cnt == 1;
        }
    }
};

分析

這道題是之前那道Edit Distance的拓展,然而這道題并沒有那道題難,這道題只讓我們判斷兩個(gè)字符串的編輯距離是否為1,那么我們只需分下列三種情況來考慮就行了:

  1. 兩個(gè)字符串的長度之差大于1,那么直接返回False

  2. 兩個(gè)字符串的長度之差等于1,那么長的那個(gè)字符串去掉一個(gè)字符,剩下的應(yīng)該和短的字符串相同

  3. 兩個(gè)字符串的長度之差等于0,那么兩個(gè)字符串對(duì)應(yīng)位置的字符只能有一處不同。

分析清楚了所有的情況,代碼就很好寫了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容