Problem
Given two strings S and T, determine if they are both one edit distance apart.
Solution
只有一个编辑距离,那就是只能在增,删,减中的一步
Bug : 两个字符串相等时应该返回 false
class Solution {
bool helper( const string& s, int s_begin, const string& t, int t_begin){
while(s_begin < s.size()){
if(s[s_begin++] != t[t_begin++]) return false;
}
return true;
}
public:
bool isOneEditDistance(string s, string t) {
const int s_len = s.size(), t_len = t.size();
if( s_len < t_len ) return isOneEditDistance( t, s);
if( s_len - t_len >= 2) return false;
for( int i = 0; i < s_len ; i++){
if(s[i] != t[i]) {
int s_begin = i + 1, t_begin = ( s_len == t_len ? i + 1 : i );
return helper(s, s_begin, t, t_begin);
}
}
return false;
}
};