161.One edit distance

只需要对比两个字符串对应位置上的字符, 如果遇到不同的时候,这时我们看两个字符串的长度关系, 1) 如果相等,那么我们比较当前位置后的字串是否相同, 2) 如果s的长度大,那么我们比较s的下一个位置开始的子串,和t的当前位置开始的子串是否相同, 3) 反之如果t的长度大,那么我们比较t的下一个位置开始的子串,和s的当前位置开始的子串是否相同。 4)如果循环结束,都没有找到不同的字符,那么此时我们看两个字符串的长度是否相差1

class Solution {
public:
    bool isOneEditDistance(string s, string t) {
        int sizeS = s.size();
        int sizeT = t.size();
        int size = min(sizeS, sizeT);
        for(int i = 0;i<size;++i) {
            if(s[i]!= t[i]) {
                return (sizeS == sizeT && s.substr(i+1) == t.substr(i+1)) || 
                       (sizeS > sizeT  && s.substr(i+1) == t.substr(i)) ||
                       (sizeS < sizeT  && s.substr(i) == t.substr(i+1));
            }
        }
        int diff = sizeS-sizeT;
        return abs(diff) == 1;
    }
};

results matching ""

    No results matching ""