算法"/>
LeetCode 探索初级算法
15 有效的字母易位词-20200327
中间断了两天,今天是周五,在下周一前会补上前面的两道题。
题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例
输入: s = "anagram", t = "nagaram"
输出: true
说明
你可以假设字符串只包含小写字母。
进阶
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
注意事项
- 什么是字母易位词,就是字母顺序不一样,字母的个数、重复次数以及哪些字母都是一样的。
思路一
看到这道题,有不少想法。可以先用 set() 判断是否有不一样的字母。有得话直接 return False,没有再判断出现字母的重复次数,这个可以用字典或者列表实现。最后判断顺序是否一致。
修改经历:
1. 一次通过。(第一次提交)
- 执行用时 :48 ms, 在所有 Python3 提交中击败了84.96%的用户
- 内存消耗 :13.9 MB, 在所有 Python3 提交中击败了5.02%的用户
心得体会:
这题不难。
最终代码展示:
class Solution:def isAnagram(self, s: str, t: str) -> bool:sSet, tSet = set(s), set(t)if sSet != tSet:return Falseelse:for i in sSet:if s.count(i) != t.count(i):return Falseelse:passfor j in range(0, len(s)):if s[j] != t[j]:breakelse:passreturn True
题解的答案都没关注词语的字母顺序,所以就不参考题解了。不过要注意的是,大部分用的 sort(s) 来生成字符串s的顺序。
至于进阶的unicode字符,其实字典就可以代替 conut() 来表示重复次数。
更多推荐
LeetCode 探索初级算法
发布评论