具体实现代码如下:
注:代码里注释中说的s2其实就是alist,注释中说s2是为了便于理解
def solution1(s1,s2): #定义变位词解决办法1,传入s1,s2;两个参数
alist=list(s2) #新建列表,将s2的每个字符复制alist中
pos1=0 #用来循环遍历s1的每个字符,pos就是position的缩写
stillOK=True #用来判断是否需要继续进行比对,若查找中有一个s1中字符在s2中找不到,则判定该字符串不是变位词
while pos1<len(s1) and stillOK: #当s1未遍历完成并且s1中字符在s2中可以找到时
pos2=0 #用来遍历s2的每个字符
found=False #初始值为False,如果s1在s2中找到对应的,found变为True,表示已找到
while pos2<len(alist) and not found: #如果还没有遍历完成s2并且s1在s2前面几个字符中未找到匹配项,则继续进行循环查找
if s1[pos1]==alist[pos2]: #如果查找成功
found=True #found变为True,退出本次循环
else: #否则
pos2=pos2+1 #pos2+1,查找s2下一个字符
if found: #如果s1在s2中能找到对应的字符
alist[pos2]=None #s2的相应字符变为None,防止重复字符查找
else: #如果找不到
stillOK=False #表示这两个字符串不是变位词,停止循环
pos1=pos1+1 #如果没有退出循环的话,pos1=pos1+1,进入下一个单词查找
return stillOK
print(solution1("abcd","dcba"))
print(solution1("dsaf","gsdf"))
两个输出结果为:True,False
解法2代码实现:
下面展示一些 内联代码片
。
def solution2(s1,s2): #定义解法2,传入参数s1,s2
alist1=list(s1) #复制s1至列表alist1中
alist2=list(s2) #复制s2至列表alist2中
alist1.sort() #对alist1进行排序
alist2.sort() #对alist2进行和alist1一样的排序
pos=0 #从第一个字符开始查找
matches=True #matches用来判断每个字符是否相等
while pos<len(s1) and matches: #如果未遍历完列表并且之前的字符都匹配
if alist1[pos]==alist2[pos]: #如果两个相同位置的字符相同
pos=pos+1 #则对下一个字符进行比较
else: #如果不相同
matches=False #退出循环
return matches
print(solution2("abcd","dcba"))
print(solution2("dsaf","gsdf"))
运行结果为:True,False