注意如下几点:
ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。
- >>> ord('0')
- 48
-
- >>> ord('A')
- 65
-
- >>> ord('a')
- 97
ord()函数的一个应用场景就是,利用哈希表解决字母异位词问题。
利用ord()函数求解每个字母的ASCII数值,再利用每个字母和字母a之间的差值,将26个小写英文字母映射到下标分别为0-25的数组上,数组中存放的是每个字母的数目。
例如:
- class Solution(object):
- def findAnagrams(self, s, p):
- """
- :type s: str
- :type p: str
- :rtype: List[int]
- """
- result = []
- record_s = [0]*26
- record_p = [0]*26
- if len(s) < len(p):
- return result
- for i in range(len(p)):
- record_s[ord(s[i])-ord('a')] += 1
- record_p[ord(p[i])-ord('a')] += 1
- if record_s == record_p:
- result.append(0)
- for i in range(len(s)-len(p)):
- record_s[ord(s[i])-ord('a')] -= 1
- record_s[ord(s[i+len(p)])-ord('a')] += 1
- if record_s == record_p:
- result.append(i+1)
- return result