Leetcode 859. 亲密字符串
思路:统计每个字符出现的频数
亲密字符串必须保证每个字符出现的频数一样多,判断不相同的位置即可
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( C ) O(C) O(C)
class Solution {
public:
bool buddyStrings(string s, string goal) {
int n = s.size(), m = goal.size();
if (n != m) return false;
char a[26] = {0}, b[26] = {0};
int cnt = 0;
for (int i = 0; i < n; i ++ ) {
if (s[i] != goal[i])
cnt ++ ;
a[s[i] - 'a'] ++ ;
b[goal[i] - 'a'] ++ ;
}
bool flag = false;
for (int i = 0; i < 26; i ++ ) {
if (a[i] != b[i]) return false;
if (a[i] > 1) flag = true;
}
return cnt == 2 || (!cnt && flag);
}
};