161. One Edit Distance

https://leetcode.com/problems/one-edit-distance/

字符串S和T是否相差一个编辑距离。遍历在找到第一个不同的字符S[i]后,分别检查添,改和删后是否相同。"改"意味着S[i+1:] == T[i+1:],删说明S[i+1:] == T[i:],添对应S[i:] == T[i+1]。最后当没有找到i时,检查S和T长度是否相差1,对应添/删一个字符。

class Solution {
public:
    bool isOneEditDistance(string s, string t) {
        for (int i = 0; i < min(s.length(), t.length()); ++i) {
            if (s[i] == t[i]) continue;
            return s.substr(i + 1) == t.substr(i) || s.substr(i + 1) == t.substr(i + 1) || s.substr(i) == t.substr(i + 1);
        }
        return abs((int)s.length() - (int)t.length()) == 1;
    }
};

Last updated