leetcode 算法题859 (简单223) 亲密字符串

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/FYuu95100/article/details/102711215

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

  • 注意
  1. 0 <= A.length <= 20000
  2. 0 <= B.length <= 20000
  3. 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%的用户

猜你喜欢

转载自blog.csdn.net/FYuu95100/article/details/102711215
今日推荐