题目描述如下:
相关标签:哈希表
解题思路:题目中说pattern与str存在着双向连接,就是任意一个字符都对应着唯一的字符串,这里我们可以使用两个
哈希表来判断是否存在着这个双向连接。我们可以利用哈希表记录每一个字符对应的字符串,以及每一个
字符串对应的字符。然后我们枚举每一对字符与字符串的配对过程,不断更新哈希表,如果发生了冲突,
则说明给定的输入不满足双射关系
代码实现如下:
public boolean wordPattern(String pattern, String s) {
String[] s1 = s.split(" ");
if(pattern.length()!=s1.length){
return false;
}
Map<String,Character> datas=new HashMap<>();
Map<Character,String> datas2=new HashMap<>();
for(int i=0;i<pattern.length();i++){
if(datas.get(s1[i])==null && datas2.get(pattern.charAt(i))==null){
datas.put(s1[i],pattern.charAt(i));
datas2.put(pattern.charAt(i),s1[i]);
continue;
}
if((datas.get(s1[i])!=null && !datas.get(s1[i]).equals(pattern.charAt(i))) ||
(datas2.get(pattern.charAt(i))!=null && !datas2.get(pattern.charAt(i)).equals(s1[i]))){
return false;
}
}
return true;
}