LeetCode-242.有効なアルファベット異位語-Python 3解法

9513 ワード

問題解決の考え方1:
1.2つのリストを用意する:list 1:26個の0,[0,0,0,...,0],list 2:26個の小文字の英字[‘a’,‘b’,‘c’,...,‘y’,‘z’]2.入力された文字列sを遍歴し、リストリストリストt 2にこの値があるかどうかを探し、ある場合はリストリストリストt 1に対応する位置+1、文字列tは同じであり、リストリストリストリストt 1に対応する位置-1にすぎない.
遍歴した後、有効アルファベットの異位語(使用するアルファベットの種類、個数は同じで、位置が異なるだけ)であれば、リストリストリストt 1は変わらず、すべてゼロです.有効アルファベットの異位語でなければ、リストリストリストリストt 1にはゼロではない値があります.例えばリストリストリストt 1=[-1,0,1,...,0]などの場合3.リストリストリストt 1を順番に並べ替え、リストリストリストt 1を巡回し、先頭と末尾の値が0に等しくない場合は、いいえ、Falseを返し、他の場合はTrueを返します.
class Solution:
    def isAnagram(self, s: str, t: str):
        list1=[0]
        list1 = list1 * 26
        list2 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
        for i in s:
            list1[list2.index(i)]+=1
        for l in t:
            list1[list2.index(l)]-=1
        for k in list1:
            list1.sort()
            if list1[0] !=0 or list1[-1]!=0:
                return False
            else:
                return True

問題解決の考え方2:
1.入力s,t文字列をリストリストリストt 1,リストt 2として順番に並べ替える.文字列が「」である場合、None、直接Trueを返します.内容があれば、2つのリストを最初から1つずつ比較し、1つが異なる場合はFalseを最後まで返し、同じ場合はTrueを返します.
class Solution:
    def isAnagram(self, s: str, t: str):
        list1=list(s)
        list2=list(t)
        list1.sort()
        list2.sort()
        if len(list1)==0:
            return True
        else:
            if len(list1) == len(list2):
                for i in range(len(list1)):
                    if list1[i] == list2[i]:
                        if list1[i] == list1[-1]:
                            return True
                    else:
                        return False
            else:
                return False

質問があればブロガーに連絡してください:微信:hrvrap qq:250419087