Think Python Exercise 10.6

如果可以通过重排一个单词中字母的顺序,得到另外一个单词,那么称这两个单词是变位词。编写一个叫做 is_anagram 的函数,接受两个字符串作为参数, 如果它们是变位词则返回 True

解答:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def is_anagram(s1,s2):
    t1 = list(s1)
    t2 = list(s2) #先把字符串转换成列表
    if len(t1) == len(t2): #如果两个字符串长度都不一样,那么肯定不是变位词了
        t1.sort()
        t2.sort() #按照同样的方式重新排序后,如果二者元素对应相等,那么它们就是变位词了
        for i in range(len(t1)):
            if t1[i] == t2[i]:
                pass
            else:
                return False
        return True
    else:
        return False

is_anagram('abc','bac')