LeetCode 290英国法(パイソン)

トピックリンク

説明タイトル:
法とパターン文字列strを与え、STR同じルールに従うかどうかを決定します。

ここでは、例えば、各文字列strと各非空のワードとの間の双方向接続に対応するパターンの規則性があり、完全一致手段に従います。

例1:

入力:パターン=「アバ」、STR =「犬猫猫犬」
出力:真の
例2:

入力:パターン=「アバ」、STR =「犬猫猫の魚」
出力:偽
例3:

入力:パターン=「AAAA」、STR =「犬猫猫犬」
出力:偽
例4:

入力:パターン=「アバ」、STR =「犬犬犬犬」
出力:偽
の説明:
あなたは、パターンが小文字のみを含めることができると仮定し、strが単一のスペースで区切られた小文字が含まれています。

問題解決のアイデア:
SSTRに分割空間上のSTR、パターン長と異なるSSTRの長さは、直接Falseを返す場合
、キーを通る電流が辞書に表示された場合、それが決定され、SSTR辞書に値として、キーとしてのパターンをキーの値は、Falseに等しくないが返されに対応する値に等しい辞書
現在のキーが辞書に登場していない場合は辞書に発生していない対応する値を決定し、返される偽があった
、ありませんがあった場合辞書に追加

class Solution(object):
    def wordPattern(self, pattern, str):
        """
        :type pattern: str
        :type str: str
        :rtype: bool
        """
        sstr=str.split(' ')
        if len(sstr)!=len(pattern):
            return False
        dic={}
        for i in range(len(pattern)):
            if pattern[i] in dic:
                if dic[pattern[i]]!=sstr[i]:
                    return False
            elif sstr[i] in dic.values():
                return False     
            else:
                dic[pattern[i]]=sstr[i]
        return True

ここに画像を挿入説明

コメントエリア回答:

        words = str.split(' ')
        if len(words) != len(pattern):
            return False
        return map(pattern.find, pattern) == map(words.index, words)

おすすめ

転載: blog.csdn.net/weixin_44740082/article/details/91994293