#include <iostream>
#include <algorithm>
#include "vector"
#include "string"
#include "set"
#include "unordered_set"
#include "unordered_map"
#include "queue"
#include "stack"
using namespace std;
//分两种情况,一种是A == B,另一种是A! = B
//相等前提下,只要A中有两个相同字母,就满足条件
//不等前提下,有且只有两个交叉字母才满足条件
bool buddyStrings(string A, string B)
{
int lenA = A.length();
int lenB = B.length();
if (lenA != lenB)
return false;
unordered_set<char>s(A.begin(), A.end());
if (A == B && s.size()<lenA)//有重复的
return true;
vector<int> diff;
for (int i = 0; i < lenA; i++)
{
if (A[i] != B[i])
{
diff.push_back(i);
}
}
return diff.size() == 2 && A[diff[0]] == B[diff[1]] && A[diff[1]] == B[diff[0]];//仅两个元素不同,且交叉。下标存放在vector
}
int main()
{
cout << buddyStrings("aaaaaaabc","aaaaaaacb");
system("pause");
return 0;
}