Implement a function OneEditApart with the following signature:
bool OneEditApart(string s1, string s2)
isOneEditDistance("cat", "dog") = false
isOneEditDistance("cat", "cats") = true
isOneEditDistance("cat", "cut") = true
isOneEditDistance("cat", "cast") = true
isOneEditDistance("cat", "at") = true
isOneEditDistance("cat", "acts") = false
Edit is: insertion, removal, replacement
bool isOneEditDistance(string s, string t) {int len_s = s.size(), len_t = t.size();int size_dif = abs(len_s - len_t);if(size_dif > 1) return false;int dif = 0, max_s = max(len_s, len_t);auto shorter = s.c_str(), longer = t.c_str();if(s.size() > t.size()) swap(shorter, longer);for(int i = 0; i < max_s; ++i) {if(shorter[i - (size_dif == 0 ? 0 : dif)] == longer[i]) continue;if(++dif > 1) return false;}return dif == 1;}
另一种简单的解法
|
|
转自:http://www.fgdsb.com/tags/Array/page/3/