码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-09-21 16:08:39      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:一点   更新   判断   ram   输出   一个   官方   san   说明   

问题描述:

给定两个字符串 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

 

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

标签:一点   更新   判断   ram   输出   一个   官方   san   说明   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!