给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
示例1:
输入: pattern = “abba”, str = “dog cat cat dog”
输出: true
代码
class Solution {public boolean wordPattern(String pattern, String s) {String[] t=s.split(" ");Set<String> set=new HashSet<>();//记录出现过的字母Map<Character,String> map=new HashMap<>();//记录字母与模式字母的匹配if(pattern.length()!=t.length) return false;for(int i=0;i<t.length;i++){if(!map.containsKey(pattern.charAt(i))){if(set.contains(t[i])) return false;//模式字母没出现过,但是字符串出现了,出现重复map.put(pattern.charAt(i),t[i]);set.add(t[i]);}else {if(!map.get(pattern.charAt(i)).equals(t[i]))//模式字母对应的字符串重复了return false;}}return true;}
}