LC 890. Find and Replace Pattern

You have a list of words and a pattern, and you want to know which words in words matches the pattern.

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.)

Return a list of the words in words that match the given pattern.

You may return the answer in any order.

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.

Note:

  • 1 <= words.length <= 50
  • 1 <= pattern.length = words[i].length <= 20

Runtime: 4 ms, faster than 62.45% of C++ online submissions for Find and Replace Pattern.

注意一一对应要用两个字典。

class Solution {
public:
  vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
    vector<string> ret;
    for(auto word : words){
      if(word.size() != pattern.size()) continue;
      unordered_map<char,char> mp_w2p;
      unordered_map<char,char> mp_p2w;
      bool shouldput = true;
      for(int i=0; i<word.size(); i++){
        if(!mp_w2p.count(word[i]) && !mp_p2w.count(pattern[i])){
          mp_w2p[word[i]] = pattern[i];
          mp_p2w[pattern[i]] = word[i];
        } else if(!mp_w2p.count(word[i]) || !mp_p2w.count(pattern[i])) {
          shouldput = false;
          break;
        }else if(mp_w2p[word[i]] != pattern[i] || mp_p2w[pattern[i]] != word[i]){
          shouldput = false;
          break;
        }
      }
      if(shouldput) ret.push_back(word);
    }
    return ret;
  }
};

原文地址:https://www.cnblogs.com/ethanhong/p/10188208.html

时间: 2024-10-30 14:14:53

LC 890. Find and Replace Pattern的相关文章

890. Find and Replace Pattern - LeetCode

Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: 举例:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb" abc -> 011 abc -> 012 deq -> 0

890.&#160;Find and Replace Pattern

You have a list of words and a pattern, and you want to know which words in words matches the pattern. 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 d

[LeetCode] 890. Find and Replace Pattern 查找和替换模式

You have a list of?words?and a?pattern, and you want to know which words in?words?matches the pattern. 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 d

[Swift]LeetCode890. 查找和替换模式 | Find and Replace Pattern

You have a list of words and a pattern, and you want to know which words in words matches the pattern. 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 d

arts-week6

Algorithm 830. Positions of Large Groups - LeetCode 75. Sort Colors - LeetCode 859. Buddy Strings - LeetCode 791. Custom Sort String - LeetCode 804. Unique Morse Code Words - LeetCode 877. Stone Game - LeetCode 890. Find and Replace Pattern - LeetCod

JavaScript——关于字符串的replace函数中的function函数的参数

1 <!DOCTYPE> 2 <html> 3 <head> 4 </head> 5 <body> 6 <script type="text/javascript"> 7 function test(s){ 8 var pattern=/&([^&;]+);/g; 9 s.replace(pattern,function(a,b,c,d,e){ 10 alert(a); 11 alert(b); 1

js正则替换replace

content = "<p><strong>发斯蒂芬斯</strong>蒂芬434324</p><p><strong>范德萨发</strong>的发斯蒂芬</p><p><strong>242<b>3423</b>423</strong></p>"; console.log(content); var pattern =

javascript正则表达式总结(test|match|search|replace|split|exec)

test:测试string是否包含有匹配结果,包含返回true,不包含返回false. <script type="text/javascript"> var str = "bbs.byr.cn"; var reg = /b/; var ret = reg.test(str); alert(ret); //true </script> match:根据pattern进行正则匹配,如果匹配到,返回匹配结果,如匹配不到返回null <scr

字符串的replace()方法隐藏着什么不可告人秘密?

最近在做JS算法项目时发现一个令我匪夷所思的问题, 这里想记录一下问题. 首先介绍一下字符串replace()方法的基本用法. replace() 方法使用一个替换值(replacement)替换掉一个匹配模式(pattern)在原字符串中某些或所有的匹配项,并返回替换后的字符串.这个替换模式可以是字符串或者RegExp(正则表达式),替换值可以是一个字符串或者一个函数. 语法EDIT str.replace(regexp|substr, newSubStr|function[, flags])