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;
}
};