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);
}
};
本文详细介绍了LeetCode第859题《亲密字符串》的解题思路,主要涉及字符串处理和计数技巧。通过统计每个字符出现的频率,判断字符串是否为亲密字符串,时间复杂度为O(n),空间复杂度为O(C)。核心在于检查不同位置字符数量及相同字符重复情况。
1304

被折叠的 条评论
为什么被折叠?



