Leetcode Algorithm No.242 Valid Anagram

问题描述:

Giventwo strings s and t, write a function to determineif t is an anagram of s.

Forexample,
s = "anagram", t = "nagaram",return true.
s = "rat", t = "car", returnfalse.

Note:
You may assume the string contains only lowercase alphabets.

 

解决方法:

一共有26个字母,为每个字母对应一个素数,让每个字母对应的素数都不相同。

将字符串s中所有出现过的字母所对应的素数相乘,会得到一个很大的乘数。

用这个乘数除以t字符串中所有出现过的字母对应的素数,全部可以除尽则说明是anagram.

 

Python 代码如下(python3.4)

def isAnagram(self, s, t):
    reference = {'a':2,'b':3,'c':5,'d':7,'e':11,'f':13,'g':17,'h':21,'i':23,'j':31,'k':37,'l':41,'m':43,'n':47,'o':51,'p':53,'q':57,'r':61,'s':67,'t':71,'u':79,'v':87,'w':91,'x':101,'y':103,'z':107}
    i=0
    products = 1
    while i< len(s):
        products = products * reference[s[i]]
        i=i+1
    i=0
    productt = 1
    while i< len(t):
        productt = productt * reference[t[i]]
        i=i+1
    if productt == products:
        return True
    else:
        return False
s = "anagram"
t = "nagaram"
out=isAnagram(1, s, t)
print(out)


你可能感兴趣的:(Leetcode Algorithm No.242 Valid Anagram)