LeetCode刷题笔记 - 859. 亲密字符串 运行结果 题目注意点 bool buddyStrings(char* s, char* goal) { char d = 0; char gd = 0; int pair = 0; int epair = 0; char map[256] = {0}; if (strlen(s) != strlen(goal)) { return false; } while (*s != '\0') { if (*s != *goal) { if (d == 0) { d = *s; gd = *goal; } else { if (d != *goal || gd != *s) { return false; } d = 0; gd = 0; pair++; } } map[*s]++; if (map[*s] > 1) { epair++; map[*s] = 0; } s++; goal++; } if (d != 0 || gd != 0) { return false; } if (pair == 0) { if (epair == 0) { return false; } else { return true; } } else { if (pair != 1) { return false; } } return true; } 运行结果 题目 注意点 如果原始字符串(s)与目标字符串(goal)里,需要考虑s内的相同字符对数,最少需要大于一对才能满足条件;需要考虑第一次遇到不同字符时,与第二次遇到不通字符时,这个4个字符分别命名为s[FIRST]、goal[FIRST]、s[SECOND]、goal[SECOND]的关系如下: s[FIRST] == goal[SECOND] goal[FIRST] == s[SECOND]