zoukankan      html  css  js  c++  java
  • LeetCode242有效字母异位词

    # coding:utf-8
    """
    Name : NO242.py
    Author  : qlb
    Contect : 17801044486@163.com
    Time    : 2021/2/5 8:08
    Desc: 有效字母异位词
    """
    #解题思路
    #有效字母异位词的条件有以下几个
    #1 两个字符串长度相等 可以完全相同
    #2 两个字符串B里面的每个字符都在A里面,排列顺序和A不同
    
    #所以首先将A和B排序,如果A和B是有效字母异位词,那么将A和B排序之后,A和B是完全相同的,如果AB不是完全相同,则返回False
    class Solution:
        def isAnagram(self, s: str, t: str) -> bool:
            if len(s) == len(t):
                s = sorted(s)
                t = sorted(t)
                if s == t:
                    return True
                else:
                    return False
            else:
                return False
    
    
    test = Solution()
    res = test.isAnagram("abcdfgh","abcdfgh")
    print (res)


    #解题思路2
    #题目中说到字符只有小写字符 ,那么可以定义一个数组,来记录字符串s里面每个字符出现的次数,那么定义多大的数组呢
    #由于只是小写字母 所以数组的长度为26
    #如何把字符映射到数组上呢?因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为0,相应的字符z映射为下表25。
    # 如何计算字母a的下标 ord('a') - ord('a')  = 0  字符ss的下标为ord(ss) - ord('a')
    # 对于字符串s来说 只要出现某个字符ss 那么该字符对应的位置计数值加1
    # 对于字符串t来说 只要出现某个字符tt 那么该字符对应的位置计数值减1
    # 如果s和t是有效的字母异位词 那么最后记录字符出现次数的数组所有值均为0
    class Solution2:
        def isAnagram(self, s: str, t: str) -> bool:
            countArray = [0]*26
            if len(s) == len(t):
                for ss in s:
                    countArray[ord(ss) - ord('a')] += 1
                for tt in t:
                    countArray[ord(tt) - ord('a')] -= 1
                num_of_zero = countArray.count(0)
                # num_of_zero = 0
                # for n in countArray:
                #     if n == 0:
                #         num_of_zero += 1
                if num_of_zero == 26:
                    return True
                else:
                    return False
            else:
                return False
  • 相关阅读:
    反序列化
    反序列化使用
    Serializer序列器
    DRF工程搭建
    JDK目录介绍
    Java环境变量配置
    Java语言的特性
    Java语言概述
    计算机编程语言介绍
    软件开发介绍
  • 原文地址:https://www.cnblogs.com/cnugis/p/14375887.html
Copyright © 2011-2022 走看看