在leetCode上看到亲密字符串,接下来对这个词进一步的了解,从而写下了这篇笔记。
亲密字符串
给定两个由小写字母构成的字符串 A
和 B
,只要我们可以通过交换 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)