• 890. Find and Replace Pattern


    Given a list of strings words and a string pattern, return a list of words[i] that match pattern. You may return the answer in any order.

    A word matches the pattern if there exists a permutation of letters p so that after replacing every letter x in the pattern with p(x), we get the desired word.

    Recall that a permutation of letters is a bijection from letters to letters: every letter maps to another letter, and no two letters map to the same letter.

    Example 1:

    Input: words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"
    Output: ["mee","aqq"]
    Explanation: "mee" matches the pattern because there is a permutation {a -> m, b -> e, ...}. 
    "ccc" does not match the pattern because {a -> c, b -> c, ...} is not a permutation, since a and b map to the same letter.
    

    Example 2:

    Input: words = ["a","b","c"], pattern = "a"
    Output: ["a","b","c"]
    

    Constraints:

    • 1 <= pattern.length <= 20
    • 1 <= words.length <= 50
    • words[i].length == pattern.length
    • pattern and words[i] are lowercase English letters.
    class Solution {
        public List<String> findAndReplacePattern(String[] words, String pattern) {
            String p = help(pattern);
            List<String> res = new ArrayList();
            for(String s : words) {
                String cur = help(s);
                if(cur.equals(p)) {
                    res.add(s);
                }
            }
            return res;
        }
        
        public String help(String s) {
            StringBuilder sb = new StringBuilder();
            char cur = 'a';
            Map<Character, Character> map = new HashMap();
            for(char c : s.toCharArray()) {
                if(!map.containsKey(c)) {
                    map.put(c, cur);
                    sb.append(cur);
                    cur++;
                }
                else sb.append(map.get(c));
            }
            return sb.toString();
        }
    }

    所有的word都重新formalize一遍。

  • 相关阅读:
    RabbitMQ学习之:(八)Topic Exchange (转贴+我的评论)
    RabbitMQ学习之:(六)Direct Exchange (转贴+我的评论)
    抽象类
    开闭原则
    反射
    解决默认方法冲突
    单一职责原则
    java四种访问修饰符
    Java中基本类型和包装类
    方法在继承过程中可能出现的问题
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/14798081.html
Copyright © 2020-2023  润新知