程序地带

290. 单词规律(哈希表)


一、题目描述


给定一种规律 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 说明: 你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。


二,题解 方法:哈希 由于pattern与字符串中的单词是一一对应的关系,因此需要用两个哈希表来存储判断是否是一一对应


class Solution {
public boolean wordPattern(String pattern, String s) {
String[] strArray = s.split(" ");
if(pattern==null||s==null||pattern.length()!=strArray.length)
return false;
HashMap<Character,String> patMapS = new HashMap<>();
HashMap<String,Character> sMapPat = new HashMap<>();
String tempStr;
char tempCh;
for(int i=0;i<pattern.length();i++){
tempStr = patMapS.getOrDefault(pattern.charAt(i),strArray[i]);
if(!tempStr.equals(strArray[i])){
return false;
}
tempCh = sMapPat.getOrDefault(strArray[i],pattern.charAt(i));
if(tempCh != pattern.charAt(i)){
return false;
}
patMapS.put(pattern.charAt(i),strArray[i]);
sMapPat.put(strArray[i],pattern.charAt(i));
}
return true;
}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38748148/article/details/111246266

随机推荐