亲密字符串

在leetCode上看到亲密字符串,接下来对这个词进一步的了解,从而写下了这篇笔记。

亲密字符串

给定两个由小写字母构成的字符串 AB ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false

提示:

  • A和B仅由小写字母构成
  • 只交换两个字母
  • A和B的长度相等

实现思路

亲密字符串几乎是匹配的,这两个字符串只有两个索引的值不一样(两个字符串不是完全相等的情况下)

一共有两种情况

  • 一是两个字符串完全相等。
    在这种情况下,我们需要在一个字符串中寻找两个相同的字母的索引,交换这两个字母的位置,这两个字符串还是相等的。

  • 二是这两个字符串不相等的情况。
    首先,比较这两个字符串,找出这两个字符串不相等的字母的位置。然后统计字母不一样的数量是否为2(只需要交换两个字母的位置),如果大于2则不是亲密字符串。找到不一样的字母以后,在字符串A中交换这两个字母的位置,然后比较是否相等,相等则是亲密字符串

var A='abfdbc'
var B='abcdbf'
function buddyStrings(A, B) {
    if (A.length != B.length) {
        return false;
    }
    if (A === B) {
        for (let i = 0; i < A.length; i++) {
            for (let j = i + 1; j < A.length; j++) {
                if (A[i] === A[j]) {
                    var charA = A[i]
                    return A[i]
                }
            }
        }
    } else {
        var count = 0
        var aString = []
        var bString = []
        for (let i = 0; i < A.length; i++) {
            if (A.charAt(i) !== B.charAt(i)) {
                aString[count] = A.charAt(i)
                bString[count] = B.charAt(i)
                count += 1
                if (count > 2) {
                    return false
                }
            }
        }
        if (aString[1] === bString[0] && aString[0] === bString[1] && count < 3) {
            return aString
        }
        else {
            return false
        }
    }
}
var a = buddyStrings(A, B)
console.log(a)
原文地址:https://www.cnblogs.com/qfstudy/p/9309115.html