版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43908900/article/details/102553385
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词(python语言)。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
说明: 你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode
字符怎么办?你能否调整你的解法来应对这种情况?
下面看下面大神的操作:
基本排序,调用sorted()函数即可放回一个新的已排序列表,如果你不需要原列表亦可以使用list.sort()实现,他直接修改原列表,效率会比sorted()高。
sorted([5, 2, 3, 1, 4]) #[1, 2, 3, 4, 5]
a = [5, 2, 3, 1, 4] #a.sort() [1, 2, 3, 4, 5]
另外一个区别是, list.sort()
方法只是为列表定义的,而 sorted()
函数可以接受任何可迭代对象。
sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) #[1, 2, 3, 4, 5]
题解1:
通过将 s 的字母重新排列成 t来生成变位词。因此,如果 T是 S的变位词,对两个字符串进行排序将产生两个相同的字符串。此外,如果 s 和 t的长度不同,t 不能是 s 的变位词,我们可以提前返回。
#排序
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if len(s) != len(t):
return False
if sorted(s) != sorted(t):
return False
return True
题解2:
#哈希
#标准字典包括setdefault方法()获取一个值,如果值不存在,建立一个默认。相比之下,defaultdict允许调用者在初始化时预先设置默认值。
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if len(s) != len(t):
return False
dicts = collections.defaultdict(int)
for i in range(len(s)):
dicts[s[i]] = dicts[s[i]] + 1
dicts[t[i]] = dicts[t[i]] - 1
for val in dicts.values():
if val != 0:
return False
return True
python学习网站----分享及成功:http://xbhog.cn 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-anagram