LeetCode290_290. Wortregeln

LeetCode290_290. Wortregeln

1. Beschreibung

Bestimmen Sie anhand eines Musters und einer Zeichenfolge s, ob s demselben Muster folgt.

Das Folgende bezieht sich hier auf eine vollständige Übereinstimmung. Beispielsweise besteht eine wechselseitige Verbindung zwischen jedem Buchstaben im Muster und jedem nicht leeren Wort in der Zeichenfolge s.

Beispiel 1:

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

Beispiel 2:

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

Beispiel 3:

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

Hinweis:

1 <= pattern.length <= 300
Muster enthält nur englische Kleinbuchstaben.
1 <= s.length <= 3000
s enthält nur englische Kleinbuchstaben und ' '
s enthalten keine führenden oder nachgestellten Leerzeichen.
Jedes Wort in s wird durch ein Leerzeichen hervorgehoben getrennt

Zweitens, Lösung

Methode eins:

1. Teilen Sie str entsprechend dem Leerzeichen. Beurteilen Sie zunächst, ob die Länge nach der Teilung mit der Länge des Musters übereinstimmt. Wenn nicht, geben Sie direkt false zurück.
2. Definieren Sie eine Karte, um die Situation zu beurteilen, in der ein Schlüssel mehreren Werten entspricht.
3. Definieren Sie eine Liste, um die Situation zu beurteilen, in der mehrere Schlüssel einem Wert entsprechen.

/**
 * 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. Potenzen von 2
LeetCode 234. Palindrom-verknüpfte Liste
LeetCode 237. Knoten in der verknüpften Liste löschen
LeetCode 242. Gültige Anagramme
LeetCode 257. Alle Pfade von Binärbäumen
LeetCode 258. Bits hinzufügen
LeetCode 263. Hässliche Zahlen
LeetCode 268. Fehlende Zahlen
LeetCode 283 . Nullen verschieben
LeetCode 287. Sich wiederholende Zahlen finden
LeetCode 290. Wortmuster
LeetCode 292. Nim-Spiel



Haftungsausschluss:
        Das Urheberrecht des Titels liegt beim Originalautor. Der Code und die zugehörigen Aussagen im Artikel wurden von mir selbst auf der Grundlage meines Verständnisses geschrieben. Die relevanten Bilder im Artikel sind Screenshots aus meiner eigenen Praxis und Bilder, die verwandten Technologien entsprechen. Wenn Sie Einwände haben, wenden Sie sich bitte an, um diese zu löschen. dankbar. Nachdruck bitte mit Quellenangabe, vielen Dank.


Von luoyepiaoxue2014

Station B: https://space.bilibili.com/1523287361 Klicken Sie hier, um den Link zu öffnen.
Weibo: http://weibo.com/luoyepiaoxue2014 Klicken Sie hier, um den Link zu öffnen

Guess you like

Origin blog.csdn.net/luoyepiaoxue2014/article/details/129776249
Recommended