290. Word Pattern
by Botao Xiao
Question
Given a pattern and a string str, find if str 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 str.
Example 1:
Input: pattern = "abba", str = "dog cat cat dog"
Output: true
Example 2:
Input:pattern = "abba", str = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", str = "dog cat cat dog"
Output: false
Example 4:
Input: pattern = "abba", str = "dog dog dog dog"
Output: false
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
Second time:
- The key point of this question is the reflection between key and value.
- We need to mapping relationship is unique, so we can use HashMap, and use two methods: containsKey and containsValue.
class Solution {
public boolean wordPattern(String pattern, String str) {
String[] arr = str.split(" ");
char[] charArr = pattern.toCharArray();
if(arr.length != charArr.length) return false;
Map<String, Character> map = new HashMap<>();
for(int i = 0; i < arr.length; i++){
if(!map.containsKey(arr[i]) && !map.containsValue(charArr[i])){
map.put(arr[i], charArr[i]);
}else if(!map.containsKey(arr[i]) && map.containsValue(charArr[i])){
return false;
}else{
if(charArr[i] != map.get(arr[i]))
return false;
}
}
return true;
}
}
Subscribe via RSS