版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
leetcode 算法题859 (简单223) 亲密字符串
- 题目介绍
给定两个由小写字母构成的字符串 A 和 B ,
只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,
就返回 true ;否则返回 false 。
- 示例
输入: A = “ab”, B = “ba”
输出: true
输入: A = “ab”, B = “ab”
输出: false
输入: A = “aa”, B = “aa”
输出: true
输入: A = “aaaaaaabc”, B = “aaaaaaacb”
输出: true
输入: A = “”, B = “aa”
输出: false
- 注意
- 0 <= A.length <= 20000
- 0 <= B.length <= 20000
- A 和 B 仅由小写字母构成。
- 解法一
/**
* @param {string} A
* @param {string} B
* @return {boolean}
*/
var buddyStrings = function(A, B) {
if(A.length !== B.length) {
return false;
}
let i = count = 0 , a = b = '';
while(i < A.length) {
if(A[i] !== B[i]) {
if(!count) {
a = A[i];
b = B[i];
count++;
} else if(count > 1) {
return false;
} else {
if(a === B[i] && b === A[i]) {
count++;
} else {
return false;
}
}
}
i++;
}
if(count === 2) {
return true;
}
return A.length > new Set(A).size;
};
执行用时 : 76 ms, 在所有 JavaScript 提交中击败了97.01%的用户
内存消耗 : 36.6 MB, 在所有 JavaScript 提交中击败了11.43%的用户