当前位置:   article > 正文

LeetCode 面试经典150题 290.单词规律

LeetCode 面试经典150题 290.单词规律

题目

给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。

这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。

思路:一一映射需要用到s2t和t2s两个hash表

代码

  1. class Solution {
  2. public boolean wordPattern(String pattern, String s) {
  3. String[] arr = s.split(" ");
  4. if (pattern.length() != arr.length)
  5. return false;
  6. Map<Character, String> map = new HashMap<>();
  7. Map<String, Character> pam = new HashMap<>();
  8. for (int i = 0; i < pattern.length(); i++) {
  9. char ch = pattern.charAt(i);
  10. String str = arr[i];
  11. // 字符与单词没有一一映射
  12. if (map.containsKey(ch) && !map.get(ch).equals(str) || pam.containsKey(str) && pam.get(str) != ch) {
  13. return false;
  14. } else {
  15. map.put(ch, str);
  16. pam.put(str, ch);
  17. }
  18. }
  19. return true;
  20. }
  21. }

性能:时间复杂度O(s)      空间复杂度O(s)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/334425
推荐阅读
相关标签
  

闽ICP备14008679号