python每日一题练习 有效的字母异位词 非常简单
给定两个字符串 s
和 t
,编写一个函数来判断它们是不是一组变位词(字母异位词)。
注意:若 s
和 t
中每个字符出现的次数都相同且字符顺序不完全相同,则称 s
和 t
互为变位词(字母异位词)。
class Solution(object):
def isAnagram(self, s, t):
if sorted(s)==sorted(t) and s!=t:
return True
else:
return False
非常简单 那我们想想优化的思路是什么呢? 如果长度不相等不行 完全相等也不行 把这些条件写在前面 就能少很多排序了
class Solution(object):
def isAnagram(self, s, t):
if len(s)!=len(t):
return False
if s==t:
return False
return sorted(s)==sorted(t)
然后其实排序是比使用哈希表耗费时间的 我们不如使用上个帖子的哈希表的方法来写一写这个题目
class Solution(object):
def isAnagram(self, s, t):
if len(s)!=len(t):
return False
if s==t:
return False
counter_t=[0]*26
counter_s=[0]*26
for i in range(len(t)):
counter_t[ord(t[i])-ord('a')]+=1
for i in range(len(s)):
counter_s[ord(s[i])-ord('a')]+=1
if counter_s==counter_t:
return True
return False
使用这个方法就击败百分之74 那么还有优化的思路吗?我看到了一个是这样的 就是先将其中一个的哈希表写出 然后 如果中途出现小于0的就直接return false
注意啊 因为两个字符串的长度是相等的 那么一旦出现小于 0的就证明肯定不是相等的 直接return False就行 这也是一个很好的思路
如果这篇帖子对你来说有用 欢迎点赞!