题目:
给定一种规律 pattern
和一个字符串 s
,判断 s
是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern
里的每个字母和字符串 s
中的每个非空单词之间存在着双向连接的对应规律。
思路:一一映射需要用到s2t和t2s两个hash表
代码:
class Solution {
public boolean wordPattern(String pattern, String s) {
String[] arr = s.split(" ");
if (pattern.length() != arr.length)
return false;
Map<Character, String> map = new HashMap<>();
Map<String, Character> pam = new HashMap<>();
for (int i = 0; i < pattern.length(); i++) {
char ch = pattern.charAt(i);
String str = arr[i];
// 字符与单词没有一一映射
if (map.containsKey(ch) && !map.get(ch).equals(str) || pam.containsKey(str) && pam.get(str) != ch) {
return false;
} else {
map.put(ch, str);
pam.put(str, ch);
}
}
return true;
}
}
性能:时间复杂度O(s) 空间复杂度O(s)