290. Word Pattern
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.
My Solutions:
建立一个map,key是pattern里的字母,value是字母在pattern里的index。如果符合条件,key也应该是str里的单词,value是单词在str里的顺序。如果map在取两种类型的key时,得到的index/顺序不一样,return false。
public class Solution {
public boolean wordPattern(String pattern, String str) {
String[] strs = str.split(" ");
if (strs.length != pattern.length()) return false;
Map m = new HashMap();
for (Integer i=0; i < strs.length; i++) {
if (m.put(pattern.charAt(i), i) != m.put(strs[i], i)) return false;
}
return true;
}
}
Last updated