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中有两个相同字母,就满足条件
不等前提下,有且只有两个交叉字母才满足条件
浙公网安备 33010602011771号