- 亲密字符串
摘自,其LC每日一题,坚持把,虽然是粘贴代码,自己没有敲出来。
网址如下:
https://leetcode-cn.com/problems/buddy-strings/
bool buddyStrings(char * s, char * goal){
if(strlen(s) != strlen(goal)) return false;
int digit_s[26]; memset(digit_s, 0, sizeof(int) * 26);
int digit_goal[26]; memset(digit_goal, 0, sizeof(int) * 26);
for(int i = 0; i < strlen(s); i++){
digit_s[s[i] - 'a']++; digit_goal[goal[i] - 'a']++;
}
for(int i = 0; i < 26; i++){
if(digit_s[i] != digit_goal[i]) return false;
}
if(strcmp(s, goal) == 0){
for(int i = 0; i < 26; i++){
if(digit_s[i] > 1) return true;
}
return false;
}
int _i = -1, _j = -1, cnt = 0;
for(int i = 0; i < strlen(s) && cnt <= 2; i++){
if(s[i] != goal[i]){
cnt++;
if(cnt == 1) _i = i;
if(cnt == 2) _j = i;
}
}
char tmp = s[_i];
s[_i] = s[_j];
s[_j] = tmp;
if(strcmp(s, goal) == 0) return true;
return false;
}