zoukankan      html  css  js  c++  java
  • 290. Word Pattern

    Given a pattern and a string str, find if str follows the same pattern.

    Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

    Example 1:

    Input: pattern = "abba", str = "dog cat cat dog"
    Output: true

    Example 2:

    Input:pattern = "abba", str = "dog cat cat fish"
    Output: false

    Example 3:

    Input: pattern = "aaaa", str = "dog cat cat dog"
    Output: false

    Example 4:

    Input: pattern = "abba", str = "dog dog dog dog"
    Output: false

    Notes:
    You may assume pattern contains only lowercase letters, and str contains lowercase letters that may be separated by a single space.

    class Solution {
        public boolean wordPattern(String pattern, String str) {
            String[] words = str.split(" ");
            if (words.length != pattern.length()) return false;
    
            final Map<Character, String> map1 = new HashMap<>();
            final Map<String, Character> map2 = new HashMap<>();
            for (int i = 0; i < words.length; ++i) {
                Character key1 = pattern.charAt(i);
                if (map1.containsKey(key1)) {
                     String value = map1.get(key1);
                    if (!value.equals(words[i])) return false;
                } else {
                    map1.put(key1, words[i]);
                }
    
                final String key2 = words[i];
                if (map2.containsKey(key2)) {
                     char value = map2.get(key2);
                    if (value != pattern.charAt(i)) return false;
                } else {
                    map2.put(key2, pattern.charAt(i));
                }
            }
            return true;       
        }
    }

    和Isomorphic Strings很类似,用两个HashMap, 记录从字符到字符串和字符串到字符的映射。

  • 相关阅读:
    view 的继承关系
    dos 下小tip
    Required diagnostic data collection for RMAN backup
    数据库应用设计设计报告
    程序 从存储卡 内存卡 迁移到 SD卡
    c++ 参赛设置
    c++ 用构造函数
    Ip
    error C3872: “0x3000”: 此字符不允许在标识符中使用
    机器字长 32位与64位的区别
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11406769.html
Copyright © 2011-2022 走看看