目录结构
1.题目
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
示例:
输入: pattern = "abba", str = "dog cat cat dog"
输出: true
输入:pattern = "abba", str = "dog cat cat fish"
输出: false
输入: pattern = "aaaa", str = "dog cat cat dog"
输出: false
输入: pattern = "abba", str = "dog dog dog dog"
输出: false
说明:
你可以假设 pattern
只包含小写字母, str
包含了由单个空格分隔的小写字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/word-pattern
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
Map存储映射关系检查即可。
注意:为了保证一对一映射关系,当在Map找不到Key时,还应检查Map中对于当前的Value是否已使用。
public class Solution290 {
public boolean wordPattern(String pattern, String str) {
Map<Character,String> map = new HashMap<>();
char[] c1 = pattern.toCharArray();
String[] c2 =str.split(" ");
int len1 = c1.length, len2 = c2.length;
if (len1 !=len2){
return false;
}
for (int i = 0;i<len1;i++){
if (map.containsKey(c1[i])){
if (!map.get(c1[i]).equals(c2[i])){
return false;
}
}else{
if (map.containsValue(c2[i])){
return false;
}
map.put(c1[i],c2[i]);
}
}
return true;
}
}
- 时间复杂度:
- 空间复杂度: