859. Buddy Strings
Buddy String是指两个字符串:其中一个字符串只用交换两个字符,就能和另一个字符串相等。
首先:两个字符串长度要一样,才可能是Buddy Strings.
第二:要区分两个字符串是否相等:
相等:
可以通过交换一个字符串中两个相等的字符
比如 ‘aa’ 和‘aa’(LeetCode的example也给出了这个例子)。这个时候我用set统计字符串中Unique字符的数量。
不等:
如果两个字符串只用两个地方不一样,而且这两个地方满足Buddy String的要求。那么这两个字符串就是Buddy String。我用vector<pair<char,char>>存储两个字符串不一样的地方。
Code:
class Solution {
public:
bool buddyStrings(string A, string B) {
if(A.size()!=B.size())
return false;
else{
if(A==B && set<char>(A.begin(),A.end()).size()<A.size())
return true;
else{
vector<pair<char,char>> diff;
for(int i=0;i<A.size();i++){
if(A[i]!=B[i])
diff.push_back(make_pair(A[i],B[i]));
}
if(diff.size()==2){
if(diff[0].first ==diff[1].second && diff[0].second == diff[1].first)
return true;
else
return false;
}
else
return false;
}
}
}
};