給定一種規律 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;}
}