給定兩個由小寫字母構成的字符串 A
和 B
,只要我們可以通過交換 A
中的兩個字母得到與 B
相等的結果,就返回 true
;否則返回 false
。
示例 1:
輸入: A = "ab", B = "ba" 輸出: true
示例 2:
輸入: A = "ab", B = "ab" 輸出: false
示例 3:
輸入: A = "aa", B = "aa" 輸出: true
示例 4:
輸入: A = "aaaaaaabc", B = "aaaaaaacb" 輸出: true
示例 5:
輸入: A = "", B = "aa" 輸出: false
提示:
0 <= A.length <= 20000
0 <= B.length <= 20000
A
和B
僅由小寫字母構成。
思路:
1.兩字符串相同,且有重複字符,返回true
2.兩字符串只有兩個字符不同,兩字符互補,返回true
3.其他情況返回false
func buddyStrings(A string, B string) bool {
if len(A) != len(B){
return false
}
length := len(A)
diff := 0
var diffA []byte
var diffB []byte
tmp := false
for i:=0;i<length;i++ {
if tmp == false{
if strings.Count(A, string(A[i]))>=2{
tmp = true
}
}
if A[i] != B[i]{
diff += 1
if diff > 2{
return false
}
diffA = append(diffA, A[i])
diffB = append(diffB, B[i])
}
}
if (diff==2 && diffA[0] == diffB[1] && diffA[1] == diffB[0]){
return true
}
if (diff==0 && tmp==true){
return true
}
return false
}