题解方法
模拟
- 当 s 与 goal 长度或词频不同,必然不为亲密字符
- 当 s 与 goal 不同的字符数量为 2 或 s 与 goal 不同的字符数量为 0,且 s 中有出现数量超过 2 的字符时,必然为亲密字符
核心代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public boolean buddyStrings(String s, String goal) { int m = s.length(), n = goal.length(); if (m != n) { return false; }
int[] cnt1 = new int[26], cnt2 = new int[26]; int sum = 0; for (int i = 0; i < n; i++) { int a = s.charAt(i) - 'a', b = goal.charAt(i) - 'a'; cnt1[a]++; cnt2[b]++; if (a != b) { sum++; } } boolean flag = false; for (int i = 0; i < 26; i++) { if (cnt1[i] != cnt2[i]) { return false; } if (cnt1[i] > 1) { flag = true; } } return sum == 2 || (sum == 0 && flag); }
|
题目来源
859. 亲密字符串 - 力扣(LeetCode) (leetcode-cn.com)