给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 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
示例 4:
输入: pattern = "abba", str = "dog dog dog dog"
输出: false
思路:使用hashmap
注意分情况讨论是否存在key,是否存在value
需要格外注意的是:
由于字符串特殊 在字符串常量池中的字符串可以使用==也可以使用equals 推荐不管哪种方式 只要是比较字符串就用equals
public class wordpattern {
public boolean wordPattern(String pattern, String s) {
HashMap<Character, String> map = new HashMap<>();
char[] chars = pattern.toCharArray();
String[] strings = s.split(" ");
int clength = chars.length;
int slength = strings.length;
if(clength != slength){
return false;
}
for(int i = 0; i < clength; i++){
//不存在key
if (!map.containsKey(chars[i])){
//不存在value
if (!map.containsValue(strings[i])){
//添加key-value
map.put(chars[i], strings[i]);
}else {
//不存在key,存在value
return false;
}
}else {
//存在key,检查value
if(!map.get(chars[i]).equals(strings[i])){
return false;
}
}
}
return true;
}
}