2つの文字列は変位語です

1236 ワード

タイトル説明:関数anagan(s,t)を書いて、2つの文字列がアルファベットの順序を変えることで同じ文字列になるかどうかを判断します.
サンプル:
s=「abcd」、t=「dcab」を与え、trueを返す.
s="ab"、t="ab"を与え、trueを返す.
s="ab",t="ac"を与えfalseを返す.
題意によると、「変位語」とは2つの点を意味します.
1.2つの文字列のそれぞれが持つ文字の種類はまったく同じである(例えば、「a」、「b」、「c」、「d」を持ち、「a」、「b」、「c」、「d」のみを持つ).
2.各文字列に表示される個数は同じです.
前に「文字列を比較する」という問題がありましたが(詳しくは:リンクを開くをクリック)、その問題では、ハッシュテーブルを使って2つの文字列が関係を含んでいるかどうかを判断しました.
この問題は「比較文字列」と同様に、この方法を使用することができます.だから私は詳しく話しません.できません.前に示したリンクを開けてください.
ハッシュ・テーブルを使用して、1つの文字列の文字と対応する個数を格納し、別の文字列を巡り、生成されたハッシュ・テーブルをチェックします.
コードは次のとおりです.
class Solution:
    """
    @param s: The first string
    @param b: The second string
    @return true or false
    """
    def anagram(self, s, t):
        hash_table = {}
        for i in s:
            if i not in hash_table:
                hash_table[i] = 1
            else:
                hash_table[i] += 1
        for i in t:
            if i in hash_table:
                hash_table[i] -= 1
                if hash_table[i] < 0:
                    return False
            else:
                return False
        return True
        # write your code here