给定一种规律 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思路
哈希表
- 两个哈希表,建立正向和逆向的唯一映射关系。
- split()方法牛逼!!
class Solution { public boolean wordPattern(String pattern, String s) { //双向连接,需要保证正向和逆向都是唯一映射 Mapmap = new HashMap<>(); Map mapR = new HashMap<>(); String[] words = s.split(" "); char ch[] = pattern.toCharArray(); int n = pattern.length(), m = words.length; if (m != n) return false; for (int i = 0; i < n; i ++ ) { if (map.containsKey(ch[i])) { if (!map.get(ch[i]).equals(words[i])) return false; } map.put(ch[i], words[i]); } //反过来也要一对一映射 for (int i = 0; i < n; i ++ ) { if (mapR.containsKey(words[i])) { if (mapR.get(words[i]) != ch[i]) return false; } mapR.put(words[i], ch[i]); } return true; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)