ID | Title | Difficulty | |
---|---|---|---|
Loading... |
290. Word Pattern
Easy
LeetCode
Hash Table, String
Problem
Given a pattern and a string s, find if s follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.
Example 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Example 2:
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
Example 4:
Input: pattern = "abba", s = "dog dog dog dog"
Output: false
Constraints:
- 1 <= pattern.length <= 300
- pattern contains only lower-case English letters.
- 1 <= s.length <= 3000
- s contains only lower-case English letters and spaces ‘ ‘.
- s does not contain any leading or trailing spaces.
- All the words in s are separated by a single space.
Code
class Solution {
public boolean wordPattern(String pattern, String str) {
String[] words = str.split("\\s+");
if(words.length != pattern.length()){
return false;
}
HashMap<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.get(c).equals(word)){
return false;
}
} else {
if(map.containsValue(word)){
return false;
}
}
map.put(c, word);
}
return true;
}
}
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
dd = defaultdict(str)
words = s.split()
if len(words) != len(pattern):
return False
for pp, word in zip(pattern, words):
if pp in dd and dd[pp] != word:
return False
if pp not in dd and word in dd.values():
return False
dd[pp] = word
return True
按 <- 键看上一题!
289. Game of Life
按 -> 键看下一题!
291. Word Pattern II