LeetCode 探索初级算法-字符串:15 有效的字母易位词-20200327

15 有效的字母易位词-20200327

中间断了两天,今天是周五,在下周一前会补上前面的两道题。

题目

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

示例

输入: s = "anagram", t = "nagaram"
输出: true

说明

你可以假设字符串只包含小写字母。

进阶

如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?


注意事项

  1. 什么是字母易位词,就是字母顺序不一样,字母的个数、重复次数以及哪些字母都是一样的。

思路一

看到这道题,有不少想法。可以先用 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 False
        else:
            for i in sSet:
                if s.count(i) != t.count(i):
                    return False
                else:
                    pass
            for j in range(0, len(s)):
                if s[j] != t[j]:
                    break
                else:
                    pass
        return True

题解的答案都没关注词语的字母顺序,所以就不参考题解了。不过要注意的是,大部分用的 sort(s) 来生成字符串s的顺序。

至于进阶的unicode字符,其实字典就可以代替 conut() 来表示重复次数。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章