LeetCode290_290. Word のルール

LeetCode290_290. Word のルール

1. 説明

パターン pattern と文字列 s が与えられた場合、s が同じパターンに従うかどうかを判断します。

ここでのフォローは完全一致を指します。たとえば、パターン内の各文字と文字列 s 内の空でない各単語の間には双方向の接続があります。

例 1:

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

例 2:

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

例 3:

输入: pattern = "aaaa", s = "dog cat cat dog"
输出: false

ヒント:

1 <= pattern.length <= 300
パターンには小文字の英字のみが含まれます
1 <= s.length <= 3000
s には小文字の英字のみが含まれ、「 」には
先頭または末尾のスペースが含まれません
s 内の各単語はスペースで区切られます別れた

2、解決策

方法 1:

1. strをスペースに応じて分割し、分割後の長さがパターンの長さと同じかどうかを判断し、一致しない場合は直接falseを返します。
2. キーが複数の値に対応する状況を判断するためのマップを定義します。
3. 値に複数のキーが対応する状況を判断するためのリストを定義します。

/**
 * 290. Word Pattern
 * 题意:字样,类似于同性异构体
 * 思路: 1、将str按照空格切分,首先判断切分后的长度是否和pattern的长度一样,不一样直接返回false。
 * 2、定义一个map判断一个key对应多个value的情况。
 * 3、定义一个list判断多个key对应一个value的情况。
 */
    //AC Your runtime beats 25.66 % of java submissions.
    //33 / 33 test cases passed.	Status: Accepted	Runtime: 3 ms
    public boolean wordPattern(String pattern, String str) {
    
    
        boolean res = true;
        //map判断一个key对应多个value的情况
        Map<Character, String> map = new HashMap<Character, String>();
        String[] strs = str.split(" ");
        if (strs.length != pattern.length()) {
    
    
            return false;
        }
        for (int i = 0; i < strs.length; i++) {
    
    
            if (!map.containsKey(pattern.charAt(i))) {
    
    
                map.put(pattern.charAt(i), strs[i]);
            } else {
    
    
                if (!map.get(pattern.charAt(i)).equals(strs[i])) {
    
    
                    res = false;
                }
            }
        }
        //定义一个list,通过list和map的大小来判断多个key对应一个value的情况
        List<String> list = new ArrayList<String>();
        for (Character key : map.keySet()) {
    
    
            if (!list.contains(map.get(key))) {
    
    
                list.add(map.get(key));
            }
        }
        if (list.size() != map.size()) {
    
    
            res = false;
        }
        return res;
    }

LeetCode 231. 2 の累乗
LeetCode 234. 回文リンク リスト
LeetCode 237. リンク リスト内のノードの削除
LeetCode 242. 有効なアナグラム
LeetCode 257. 二分木のすべてのパス
LeetCode 258. ビットの追加
LeetCode 263. 醜い数字
LeetCode 268. 欠落した数字
LeetCode 283 . ゼロの移動
LeetCode 287. 繰り返される数字の検索
LeetCode 290. 単語パターン
LeetCode 292. Nim ゲーム



免責事項:
        トピックの著作権は元の作成者に属します。記事内のコードおよび関連する記述は私の理解に基づいて私が書いたものです、記事内の関連する写真は私が実践した際のスクリーンショットおよび関連技術に対応する写真です。異議がある場合は連絡して削除してください。ありがたい。転載は出典を明記してください、よろしくお願いします。


投稿者:luoyepiaoxue2014

ステーション B: https://space.bilibili.com/1523287361クリックしてリンクを開きます
Weibo: http://weibo.com/luoyepiaoxue2014クリックしてリンクを開きます

おすすめ

転載: blog.csdn.net/luoyepiaoxue2014/article/details/129776249