890.查找和替换模式

你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。

如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。

(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)

返回 words 中与给定模式匹配的单词列表。

你可以按任何顺序返回答案。

示例:

输入:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"
输出:["mee","aqq"]
解释:
"mee" 与模式匹配,因为存在排列 {a -> m, b -> e, ...}。
"ccc" 与模式不匹配,因为 {a -> c, b -> c, ...} 不是排列。
因为 a 和 b 映射到同一个字母。

提示:

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

思路

先把pattern转成统一形式,这里用函数transfor设定了一个同一形式:当出现非重复项时,其值为当前索引值,若为重复项的时候,其值为第一次出现该项的索引值;后面只要将words中的字符串一个个转为统一形式再对比就可以了。

class Solution:def findAndReplacePattern(self, words, pattern):""":type words: List[str]:type pattern: str:rtype: List[str]"""res = []p0 = self.transfor(pattern)for item in words:if self.transfor(item) == p0:res.append(item)return resdef transfor(self,word):res = ""for index,item in enumerate(word):if res == "":res += str(index)elif word[0:index].find(item) != -1:res += str(word[0:index].find(item))else:res += str(index)return res

890.查找和替换模式相关推荐

  1. LeetCode 890. 查找和替换模式(哈希表)

    1. 题目 你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配. 如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们 ...

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

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. string 替换_vim怎么查找与替换文字?比Windows记事本效率高太多了

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解vim怎么查找与替换文字. vim怎么查找 ...

  4. VIM中常用的替换模式总结

    转自http://www.hackbase.com/tech/2012-03-08/66082.html VIM中常用的替换模式总结.                       0,:g/null/ ...

  5. Python 实用技巧之正则表达式查找和替换文本的操作方法

    1.需求 我们想对字符串中的文本做查找和替换. 2.解决方案 对于简单的文本模式,使用str.replace()即可. 例如: 学习python中有什么不懂的地方,小编这里推荐加小编的python学习 ...

  6. 【python cookbook】【字符串与文本】5.查找和替换文本

    问题:对字符串中的文本做查找和替换 解决方案: 1.对于简单模式:str.replace(old, new[, max]) 2.复杂模式:使用re模块中的re.sub(匹配的模式, newstring ...

  7. vi交互式批量替换 vi批量替换 vi查找和替换

    vi中如何实现批量替换? 举个例子啊: 将文件tihuan(假设此文本中字符a)中的所有字符a换成字符w,其命令为: 1.vi tihuan 2.按esc键 3.按shift+: 4.在:后输入    ...

  8. subtext3php,sublime text3怎么快速查找和替换?快捷键是什么

    sublime text3怎么快速查找和替换代码?sublime text3怎么快速查找和替换快捷键是什么? 下面php中文网Sublime使用教程栏目就为大家详细介绍一下sublime text3查 ...

  9. python docx 替换文字_在.docx文件-Python中查找和替换文本

    我一直在寻找一种方法来查找和替换docx文件中的文本,但运气不好.我试过docx模块,但没能成功.最后,我使用zipfile模块并替换docx存档中的document.xml文件,得出了下面描述的方法 ...

最新文章

  1. 美国没有光刻机背后的原因
  2. 蜜糖变砒霜:90%美国公司区块链项目将不再重启
  3. 基于自编码器的表征学习:如何攻克半监督和无监督学习?
  4. php-cli下载,php-cli-color
  5. Cyrus SASL Libary学习
  6. jdk的java和javac命令
  7. S7-200SMART案例分析——伺服选型(一)
  8. 《Qt图形界面编程入门》实验
  9. WebRtc与P2P
  10. python和r语言对比_Python和R语言之分析对比
  11. awgn信道matlab建模,正交幅度调制信号在AWGN信道中传输的MATLAB仿真
  12. bilibili怎么设置弹幕数量_如何快速丰富bilibili弹幕屏蔽列表。
  13. VS Code环境下编辑、编译、下载Keil工程代码
  14. C#学习笔记:GDI图形高级编程(1)——如何将图形画到控件上
  15. 2022浙江大学计算机考研超强攻略
  16. String字符串转JSON对象(JSON的依赖)
  17. 2019最新Android常用开源库总结(From:知乎)
  18. @Value(“${}“)
  19. 计算机排版自然段视频教程,视频画面排版方法
  20. python tkinter火柴人_用Python实现童年小游戏俄罗斯方块!别说还挺好玩!

热门文章

  1. 快速理解j=j++ 和 j=++j(新手入门)
  2. jupyter notebook中使用R语言
  3. java jdbcrdd_鸡肋的JdbcRDD
  4. 如尼文字(卢恩字母)全解
  5. 支付宝钱包手势密码破解实战(root过的手机可直接绕过手势密码)
  6. python机器学习经典案例_Python机器学习经典实例
  7. 华为SNS2624光纤交换机出厂自带8端口激活
  8. 【shell案例】nginx检测脚本
  9. PPP协议实现透明传输的2种方法以及工作状态
  10. 开关电源怎么测试文波_电源纹波测试的正确方法,值得你学习