赞
踩
题目:
给定一种规律 pattern
和一个字符串 s
,判断 s
是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern
里的每个字母和字符串 s
中的每个非空单词之间存在着双向连接的对应规律。
思路:一一映射需要用到s2t和t2s两个hash表
代码:
- class Solution {
- public boolean wordPattern(String pattern, String s) {
- String[] arr = s.split(" ");
- if (pattern.length() != arr.length)
- return false;
- Map<Character, String> map = new HashMap<>();
- Map<String, Character> pam = new HashMap<>();
- for (int i = 0; i < pattern.length(); i++) {
- char ch = pattern.charAt(i);
- String str = arr[i];
- // 字符与单词没有一一映射
- if (map.containsKey(ch) && !map.get(ch).equals(str) || pam.containsKey(str) && pam.get(str) != ch) {
- return false;
- } else {
- map.put(ch, str);
- pam.put(str, ch);
- }
- }
- return true;
- }
- }
性能:时间复杂度O(s) 空间复杂度O(s)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。