wl413911

有效的字母异位词

链接:https://leetcode-cn.com/problems/valid-anagram

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

示例 1:

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

思路1:排序

时间复杂度:O(nlogn)

 

python代码:

  

class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
    return sorted(s) == sorted(t)

 

思路2:用map计数,比较两个map是否相同

时间复杂度:O(n)

class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
  dic1 ,dic2 = {},{}
  for item in s:
    dic1[item] = dic1.get(item,0) +1
  for item in t:
    dic2[item] = dic2.get(item,0) +1
 
  return dic1==dic2
 
 
思考一种特殊的情况:字符串中只包含26个小写字母, 那么还可以这样写
 
  
class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
  dic1 , dic2 = [0]*26 ,[0]*26
  for c in s:
    dic1[ord(c) - ord('a')] += 1
  for c in t:
    dic2[ord(c) - ord('a') += 1
  return dic1 == dic2

 

posted on 2020-05-21 16:14  wl413911  阅读(150)  评论(0编辑  收藏  举报