题目:两个字符串长度相同,都是由26 个小写字母组成。需要编写一个判断两个字符串是否是一对变位词的布尔函数,返回真假。
1.基本的解法:一个个单词进行匹配,不对就移动到下一个。

def solution(s1,s2):
    a_list=list(s2)
    pos1=0
    still_ok=True
    while pos1<len(s1) and still_ok:
        pos2=0
        found=False
        while pos2<len(a_list) and not found:
            if s1[pos1] == a_list[pos2]:
                found=True
            else:
                pos2 += 1
        if found:
            a_list[pos2]=None
        else:
            still_ok=False
        pos1 += 1
    return still_ok
print(solution('abcd','dcb'))

2.计数比较法:计算每一个字符在字符串中出现的次数,如果这两个计数器列表相同,则这两个字符串是变位词。

def solution(s1,s2):
    c1=[0]*26
    c2=[0]*26
    for i in range(len(s1)):
        pos=ord(s1[i])-ord('a')
        #pos=0,表示a;pos=1,表示b;...pos=25,表示z
        c1[pos]=c1[pos]+1
        #
    for i in range(len(s2)):
        pos=ord(s2[i])-ord('a')
        c2[pos]=c2[pos]+1
    j=0
    still_ok=True
    while j<26 and still_ok:
        if c1[j]==c2[j]:
            j=j+1
        else:
            still_ok=False
    return still_ok
print(solution('apple','pleap'))