在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)
複製程式碼