首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LintCode 1510.亲密字符串

描述

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190216G13CTK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券