排序-242-有效的字母异位词

1.堆排序,比较字符串顺序是否一致

class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        def sift(lis,low,high):
            temp=lis[low]
            i=low
            j=2*i+1
            while j<=high:
                if j+1<=high and lis[j+1]>=lis[j]:
                    j+=1
                if lis[j]>temp:
                    lis[i]=lis[j]
                    i=j
                    j=2*i+1
                else:
                    break
            lis[i]=temp
           
        def heap_sort(lis,lis2):
            l=len(lis)
            for i in range((l-2)//2,-1,-1):
                sift(lis,i,l-1)
                sift(lis2,i,l-1)

            for j in range(l):
                lis[0],lis[l-1-j]=lis[l-1-j],lis[0]
                sift(lis,0,l-1-j-1)
                lis2[0],lis2[l-1-j]=lis2[l-1-j],lis2[0]
                sift(lis2,0,l-1-j-1)  
                if lis[l-1-j]!=lis2[l-1-j]:
                    return False
            return True
     
        s=list(s)
        t=list(t)
        if len(s)!=len(t):
            return False
        return heap_sort(s,t)
        

            

        
                

2.直接用sort排序后比较
3.比较每一个字母的出现次数再结合哈希表

class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        hasp_map={}
        for i in range(len(s)):
            if hasp_map.get(s[i]) is None:
                hasp_map[s[i]]=1
            else:
                hasp_map[s[i]]+=1

        for i in range(len(t)):
            if hasp_map.get(t[i]) is not None:
                hasp_map[t[i]]-=1
                if hasp_map[t[i]]==0:
                    del hasp_map[t[i]]
            else:
                return False
        return hasp_map=={}

4.建议一个长度位26的列表,列表用来记录出现次数,最后判断列表是否相等,该方法与法3原理是一致的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值