Pythonの文字列スクランブルチェック複数のソリューション

質問:文字列の障害は、例えば、再配置された別の文字列の文字列を指します:python ptyhonは、配列、文​​字列の外にあります。今、書き込み機能は、2つの文字列が文字列をスクランブルするかどうかを決定します。

解決策1:チェック(Oの複雑さ(N- 2

デフanagram_solution(S1、S2):
     もし!lenは(S1)= LEN(S2):
         返す
    LIST2 = リスト(S2)

    のための C LIST2を:
         もし C ない S1:
             返すFalseの

    リターンを

解決方法2:ソートと比較(Oの複雑さ(nlogn))

デフanagram_solution(S1、S2):
    リスト1 = リスト(S1)
    LIST2 = リスト(S2)

    list1.sort()
    list2.sort()
    であればリスト1 == list2の:
         返す真の
     返す

解決策3:徹底的な方法(O(n)との複雑さ!)

S1は、継続的に、文字列とs2が同じ複雑さがn記述されていないかどうかを確認するために比較を破砕し、文字列を混乱させる!、

溶液4:カウントと比較する(複雑さはO(N)です)

デフanagram_solution(S1、S2):
     場合!LEN(S1)= LEN(S2)は:
         返す

    NUM1 = [0] * 26 
    からnum2 = [0] * 26 

    リスト1 = リスト(S1)を
    リスト2 = リスト(S2)

    のための C1 LIST1:
        NUM1 [ORD(C1) -ord(' A ')] + = 1
     のための C2 におけるLIST2:
        NUM2 [ORD(C2) -ord(' A ')] + = 1 のためのインデックス範囲(LEN(NUM1 )):
         もし

    NUM1 [インデックス] =!num2の[インデックス]:
             返す

    のリターンを

 

おすすめ

転載: www.cnblogs.com/hwnzy/p/10932023.html