Pyhton数据结构--“变位词”判断问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体实现代码如下:

注:代码里注释中说的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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值