简单
600
相关企业
给定一种规律 pattern
和一个字符串 s
,判断 s
是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern
里的每个字母和字符串 s
****中的每个非空单词之间存在着双向连接的对应规律。
示例1:
输入: pattern ="abba", s ="dog cat cat dog"输出: true
示例 2:
输入:pattern ="abba", s ="dog cat cat fish"输出: false
示例 3:
输入: pattern ="aaaa", s ="dog cat cat dog"输出: false
提示:
1 <= pattern.length <= 300
pattern
只包含小写英文字母1 <= s.length <= 3000
s
只包含小写英文字母和 ' '
s
不包含 任何前导或尾随对空格s
中每个单词都被 单个空格 分隔class Solution {
public boolean wordPattern(String pattern, String s) {
return isVailded(pattern, s);
}
boolean isVailded(String pattern, String s){
Map<String, String> map = new HashMap<>();
char [] p = pattern.toCharArray();
String [] ss = s.split(" ");
if(ss.length != p.length) return false;
for(int i = 0; i < p.length; i ++){
String s1 = String.valueOf(p[i]);
String s2 = ss[i];
if(map.containsKey(s1) && !map.get(s1).equals(s2)){
return false;
}
map.put(s1, s2);
}
//避免values 值都是一样的,但是却对应着不同的key
HashSet<String> uniqueValues = new HashSet<>(map.values());
if(uniqueValues.size() != map.size()) return false;
return true;
}
}