LeetCode--242--有效的字母异位词

问题描述:

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

示例 1:

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

示例 2:

输入: s = "rat", t = "car"
输出: false

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

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

方法1:每次从s中查找t首部的一个字母,更新s和t。(时间复杂度太大)

 1 class Solution(object):
 2     def isAnagram(self, s, t):
 3         """
 4         :type s: str
 5         :type t: str
 6         :rtype: bool
 7         """
 8         if len(s) != len(t):
 9             return False
10         while s:
11             index = s.find(t[0])
12             if index >= 0:
13                 s = s[:index] + s[index+1:]
14                 t = t[1:]
15             else:
16                 return False
17         if t == s:
18             return True
19         return False

方法2:官方

 1 class Solution(object):
 2     def isAnagram(self, s, t):
 3         """
 4         :type s: str
 5         :type t: str
 6         :rtype: bool
 7         """
 8         S=list(set(s))
 9         T=list(set(t))
10         if len(S)!=len(T):
11             return False
12         for i in S:
13             if i in T and s.count(i)==t.count(i):
14                 pass
15             else:
16                 return False
17         return True

简洁一点:

1 class Solution:
2     def isAnagram(self, s, t):
3         """
4         :type s: str
5         :type t: str
6         :rtype: bool
7         """ 
8         return set(s) == set(t) and all(s.count(i) == t.count(i) for i in set(s))

2018-09-21 15:41:43

原文地址:https://www.cnblogs.com/NPC-assange/p/9686882.html