言葉の法則

1.需要

  • ルールを考える pattern と、文字列 str 、裁判官 str と同じルールに従うかどうかを。
  • 従い 、ここで 完全な一致を指す。例えば、 間の双方向の接続が存在するpattern 文字列の各文字str との各非空の単語列が 

例1:

输入: pattern = "abba", str = "dog cat cat dog"
输出: true

例2:

输入:pattern = "abba", str = "dog cat cat fish"
输出: false

説明: 単一のスペースで区切られた 小文字を含め、小文字のみが含まれている 
と想定でき ます。patternstr

第二に、ハッシュテーブル

2.1思考分析

  1. この質問のアイデアは、同形文字列のハッシュテーブル最適化アルゴリズムと一致していますhttps//blog.csdn.net/Sruggle/article/details/114001098 ;
  2. つまり、文字がキーで単語が値です。次の2つの条件のいずれかが真の場合、偽になります。①ハッシュテーブルに現在の文字はありませんが、現在の文字のマッピングはあります。②そこにあります。はハッシュテーブルの現在の文字ですが、そのマッピングは現在の単語とは異なります。

2.2コードの実装

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String[] words = s.split(" ");
        if(pattern.length() != words.length) {
            return false;
        }
        Map<Character, String> map = new HashMap<>();
        for(int i = 0; i < pattern.length(); i++) {
            char c = pattern.charAt(i);
            String word = words[i];
            if(!map.containsKey(c)) {
                //不包括字符,却存在其映射单词
                if(map.containsValue(word)) {
                    return false;
                }
                map.put(c, word);
            } else {
                //包括字符,其映射与存储的值不相同
                if(!map.get(c).equals(word)) {
                    return false;
                }
            }
        }
        return true;
    }
}

2.3複雑さの分析

  • 時間計算量はO(N)です。
  • スペースの複雑さはO(N)です。

おすすめ

転載: blog.csdn.net/Sruggle/article/details/114015384