思路
- 只能交换2个,那么最多两个不一样,长度还必须相等,不一样的还不能是奇数
- 即使是0,那也起码有两个相同的才能换,2的话,必须所有的字母组成一致才行,就是差异的两个ab对应ba组成一致这种
bool buddyStrings(char * s, char * goal){
int len_s = strlen(s);
int len_g = strlen(goal);
int count = 0;
int c_s[256] = {0};
int c_g[256] = {0};
int i;
if (len_g != len_s)
return false;
for (i = 0; i < len_g; i++) {
if (s[i] != goal[i]) {
count++;
}
c_s[s[i]]++;
c_g[goal[i]]++;
}
if (count > 2 || count == 1) {
return false;
}
if (count == 0) {
for (i = 0; i < 256; i++) {
if (c_s[i] >= 2) {
return true;
}
}
}
if (count == 2) {
for (i = 0; i < 256; i++) {
if (c_s[i] != c_g[i]) {
return false;
}
}
return true;
}
return false;
}