1 class Solution 
 2 {
 3 public:
 4     bool buddyStrings(string A, string B) 
 5     {
 6         int lenA=A.length();
 7         int lenB=B.length();
 8         if(lenA!=lenB)
 9             return false;
10         unordered_set<char>cset(A.begin(),A.end());
11         if(A==B&&cset.size()<lenA)
12             return true;
13         vector<int> diff;
14         for(int i=0;i<lenA;i++)
15         {
16             if(A[i]!=B[i])
17                 diff.push_back(i);
18         }
19         return diff.size()==2&&A[diff[0]]==B[diff[1]]&&A[diff[1]]==B[diff[0]];
20     }
21 };

分两种情况,一种是A==B,另一种是A!=B

相等前提下,只要A中有两个相同字母,就满足条件

不等前提下,有且只有两个交叉字母才满足条件

posted on 2018-07-02 13:50  高数考了59  阅读(194)  评论(0)    收藏  举报