题目链接

290. 单词规律

题目描述

【LeetCode】290.单词规律(双映射)

解题思路

双哈希表

需要处理两个映射关系:pattern -> str,以及str -> pattern

如果只考虑pattern -> str的映射关系,则pattern = "abba"str = "dog dog dog dog"示例不通过。所以必须也得考虑str -> pattern的映射关系,双映射,双哈希。

AC代码

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String sBuff[] = s.split(" ");
        Map<Character,String> p2s = new HashMap<>();
        Map<String,Character> s2p = new HashMap<>();
        if(pattern.length() != sBuff.length) return false;
        boolean flag1 = true;
        boolean flag2 = true;
        for(int i = 0; i < pattern.length(); i++){
            if(p2s.containsKey(pattern.charAt(i))){
                if(p2s.get(pattern.charAt(i)).equals(sBuff[i])==false){
                    flag1 = false;
                }
            }
            else p2s.put(pattern.charAt(i),sBuff[i]);
        }
        for(int i = 0; i < pattern.length(); i++){
            if(s2p.containsKey(sBuff[i])){
                if(s2p.get(sBuff[i]).equals(pattern.charAt(i))==false){
                    flag1 = false;
                }
            }
            else s2p.put(sBuff[i],pattern.charAt(i));
        }
        if(flag1 && flag2) return true;
        else return false;
    }
}

相关文章:

  • 2021-10-17
  • 2021-11-29
  • 2021-10-25
  • 2021-09-16
  • 2021-12-21
  • 2022-03-03
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-18
  • 2021-05-02
  • 2022-12-23
  • 2021-12-28
  • 2021-12-28
  • 2021-05-22
  • 2022-12-23
相关资源
相似解决方案