Title:Word Pattern 290
Difficulty:Easy
原题leetcode地址: https://leetcode.com/problems/word-pattern/
1. Map + Set
时间复杂度:O(n),一层for循环,最长遍历为字符串pattern的长度。
空间复杂度:O(n),申请Map和Set。
/**
* Map + Set (与第205题类型一样)
* @param pattern
* @param str
* @return
*/
public static boolean wordPattern(String pattern, String str) {
if (pattern == null && str == null) {
return true;
}
else if (pattern == null || str == null) {
return false;
}
else if (pattern.length() == 0 && str.length() == 0) {
return true;
}
String strs[] = str.split(" ");
if (pattern.length() != strs.length) {
return false;
}
Map<Character, String> map = new HashMap<>();
Set<String> set = new HashSet<>();
for (int i = 0; i < pattern.length(); i++) {
char pc = pattern.charAt(i);
String s = strs[i];
if (!map.containsKey(pc)) {
if (set.contains(s)) {
return false;
}
else {
map.put(pc, s);
set.add(s);
}
}
else {
System.out.println(map.get(pc));
System.out.println(s);
if (!map.get(pc).equals(s)) {
return false;
}
}
}
return true;
}