给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
示例1:
输入: pattern = “abba”, str = “dog cat cat dog”
输出: true
示例 2:
输入:pattern = “abba”, str = “dog cat cat fish”
输出: false
示例 3:
输入: pattern = “aaaa”, str = “dog cat cat dog”
输出: false
说明:
你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。
class Solution {
public boolean wordPattern(String pattern, String s) {
//长度不一样则不遵循规律
if(pattern.length() != s.split(" ").length)
return false;
//键存放 pattern的字符,值存放单词
Map<Character, String> hm = new HashMap<>();
String[] strArr = s.split(" ");
for(int i = 0; i < strArr.length; i++) {
char c = pattern.charAt(i);
String ss = strArr[i];
if(hm.containsKey(c)) {
//字符映射的单词不相同
if(!ss.equals(hm.get(c)))
return false;
} else {
//不同字符映射相同单词
if(hm.containsValue(ss))
return false;
hm.put(c, ss);
}
}
return true;
}
}