描述
给定两个由小写字母构成的字符串和,只要我们可以通过交换中的两个字母得到与相等的结果,就返回;否则返回。
1.2.3.andconsist only of lowercase letters.
样例
Example 1:
Input: A = "ab", B = "ba"
Output: true
Example 2:
Input: A = "ab", B = "ab"
Output: false
Example 3:
Input: A = "aa", B = "aa"
Output: true
Example 4:
Input: A = "aaaaaaabc", B = "aaaaaaacb"
Output: true
Example 5:
Input: A = "", B = "aa"
Output: false
没有详细考虑的情况下,通过报错完善程序:
1.例子5,长度不相同,
2.例子4, 2个位不同,交换后得到相同结果,例子3, 2个位相同,交换后仍然相同,考虑不同记录数,如果大于2或者等于1,交换两个不同位不可能得到相同结果,或者不可能交换2个不同位,
考虑A B set不同的话,不可能通过交换得到相同结果,放在条件里,写出程序如下:
classSolution:
"""
@param A: string A
@param B: string B
@return: bool
"""
defbuddyStrings(self,A,B):
# Write your code here
ifnotlen(A)==len(B):
returnFalse
length=len(A)
count=
forxinrange(length):
ifnotA[x]==B[x]:
count+=1
ifcount>2orcount==1:
returnFalse
ifnotset(A)==set(B):
returnFalse
returnTrue
运行结果:
输入数据
"ab"
"ab"
输出数据
true
期望答案
false
条件为 “ab”,“ab”时,满足长度相同,各位不同数量为0, 但交换以后不一样了,增加判断。
classSolution:
"""
@param A: string A
@param B: string B
@return: bool
"""
defbuddyStrings(self,A,B):
# Write your code here
#第一次增加判断
ifA==B:
returnFalse
#
ifnotlen(A)==len(B):
returnFalse
length=len(A)
count=
forxinrange(length):
ifnotA[x]==B[x]:
count+=1
ifcount>2orcount==1:
returnFalse
ifnotset(A)==set(B):
returnFalse
returnTrue
运行结果:
输入数据
"aa"
"aa"
输出数据
false
期望答案
true
又冒出来"aa","aa",继续加判断,
classSolution:
"""
@param A: string A
@param B: string B
@return: bool
"""
defbuddyStrings(self,A,B):
# Write your code here
#第二次增加判断
ifA==Bandlen(set(A))>1:
returnFalse
#
ifnotlen(A)==len(B):
returnFalse
length=len(A)
count=
forxinrange(length):
ifnotA[x]==B[x]:
count+=1
ifcount>2orcount==1:
returnFalse
ifnotset(A)==set(B):
returnFalse
returnTrue
运行结果:
输入数据
"abcaa"
"abcbb"
输出数据
true
期望答案
false
A、Bset相同,但元素数量不同,继续增加排序结果相同的判断,
classSolution:
"""
@param A: string A
@param B: string B
@return: bool
"""
defbuddyStrings(self,A,B):
# Write your code here
#第三次增加判断
ifnotsorted(A)==sorted(B):
returnFalse
#
ifA==Bandlen(set(A))>1:
returnFalse
ifnotlen(A)==len(B):
returnFalse
length=len(A)
count=
forxinrange(length):
ifnotA[x]==B[x]:
count+=1
ifcount>2orcount==1:
returnFalse
ifnotset(A)==set(B):
returnFalse
returnTrue
运行结果:
输入数据
"abcabc"
"abcabc"
输出数据
false
期望答案
true
满足每种元素数量相同,元素种类一样,不同位数为0,但交换两个元素以后结果相同,再增加判断,
classSolution:
"""
@param A: string A
@param B: string B
@return: bool
"""
defbuddyStrings(self,A,B):
# Write your code here
ifnotsorted(A)==sorted(B):
returnFalse
ifA==Bandlen(set(A))>1:
#第四次增加判断
iflen(A)>2:
returnTrue
else:
#
returnFalse
ifnotlen(A)==len(B):
returnFalse
length=len(A)
count=
forxinrange(length):
ifnotA[x]==B[x]:
count+=1
ifcount>2orcount==1:
returnFalse
#可以删掉的判断
ifnotset(A)==set(B):
returnFalse
#
returnTrue
运行结果:通过。
考虑最后的这块判断没有必要,可以删掉,
ifnotset(A)==set(B):
returnFalse
领取专属 10元无门槛券
私享最新 技术干货