题目:给定两个字符串,一个是单词模式字符串,另一个是目标字符串。之后检查目标字符串是否为给定得单词模式,即求目标字符串中单词出现的规律是否符合单词模式字符串中的规律。例如:单词模式字符串为“一二二一”,目标字符串为“苹果 香蕉 香蕉 苹果”,二者得规律一样,匹配成功。

分析:

code:

def wordPattern(input1, input2):

if len(input1) != len(input2):  # 如果两个字符串得长度不一样,则肯定不匹配

return False

hashTable = {}  # 记录模式字符串和目标字符串得对应关系

used = {}  # 记录目前已经使用过得字符串都有哪些

for i in range(len(input1)):

if input1[i] in hashTable:  # 检查模式字符串中的字符是否已经被记录过映射关系

if hashTable[input1[i]] != input2[i]:  # 不是第一次出现,则检查映射关系是否一致

return False

else:

if input2[i] in used:  # 检查这个单词是否已经使用过,使用过返回不成立

return False

hashTable[input1[i]] = input2[i]  # 第一次出现,则加入哈希表

used[input2[i]] = True  # 在used中保存哪些单词已经使用过

return True

if __name__ == "__main__":

input1 = "一二二一"

input2 = "1331"

print(wordPattern(input1, input2))

程序运行结果:

True

python模式匹配算法_【python算法书】单词模式匹配?相关推荐

  1. python模式匹配算法_详解Python 最短匹配模式

    问题 你正在试着用正则表达式匹配某个文本模式,但是它找到的是模式的最长可能匹配. 而你想修改它变成查找最短的可能匹配. 解决方案 这个问题一般出现在需要匹配一对分隔符之间的文本的时候(比如引号包含的字 ...

  2. 字符串的模式匹配 (朴素模式匹配算法 ,KMP算法)

    字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置 字符串的顺序存储 typedef struct {char str[MAXSIZE];int length; }seqstring; 朴素 ...

  3. python模式选择符,Python设计模式之修饰器模式

    无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法. 如果合理,可以直接将功能添加到对象所属的类(例如:添加一个新方法) 使用组合 使用继承 与继承相比,通常应该优先选择组合,因为继承 ...

  4. java 模式匹配算法_用Java匹配模式

    java 模式匹配算法 如果您使用的是Java,那么您很有可能以前已经看过它的模式匹配. String#matches(String)方法在内部使用Pattern类型,该类型包含更复杂的功能: 通过编 ...

  5. python 病毒 基因_#Python#提取基因对应的蛋白质名

    提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...

  6. python keyboard模块_[python] PyMouse、PyKeyboard用python操作鼠标和键盘

    1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...

  7. python信息安全书籍_信息安全从业者书单推荐

    计算机及系统原理 · <编码:隐匿在计算机软硬件背后的语言> [美]Charles Petzold · <深入理解计算机系统>[美]Randal E.Bryant · < ...

  8. python 因果推断_因果推断书Causal inference:What if简介(附:因果推断书单推荐)...

    Causal Inference: What If 内容简介:本书由哈佛大学 Miguel Hernan.Jamie Robins 教授编著,对因果推理的概念和方法做了系统性阐述.该书在知乎等各大平台 ...

  9. python画大象_[python实现设计模式]-2.模板方法模式---把大象关进冰箱.

    平时大家上班都很累,为了增加工作中的欢乐气氛,黄页组准备搞个游戏. 游戏的名字是把大象关进冰箱.游戏很简单,需要把指定的物品放进冰箱. 我们都知道,把大象放进冰箱,分3步. 第一步,打开冰箱门,第二步 ...

最新文章

  1. 第十六届全国大学智能车竞赛创意组比赛国赛获奖名单
  2. golang go get命令 一键获取代码、编译并安装
  3. Leetcode224 基本加减计算器-双栈和状态转换
  4. Python编程基础:第四十二节 多重继承Multi Level Inheritance
  5. Java 网络 socket 编程
  6. $Django importlib与dir知识,手写配置文件, 配置查找顺序 drf分页器drf版本控制
  7. Musical Theme pku1743 (后缀数组)
  8. html字体代码大全_HTML基础笔记(一)
  9. 背部辨识度极高!红米K30系列将率先采用高通5G处理器
  10. Java调用ffmepg+mencoder视频格式转换(*)
  11. 使用3DMM进行人脸重建中的配准方法
  12. Android开发时候,需要下载完全的GMS谷歌服务包
  13. 仿uc设置默认浏览器
  14. CodeForces-831A-Unimodal Array (水题)
  15. PHP实现opentracing链路追踪
  16. 报错解决方案参考:《xv6分析与实验》中关于qemu运行报错解决方法
  17. 智能车浅谈——硬件篇
  18. 【报错】WebSocket connection to ‘ws://xxx.xxx.x.xxxx:8080/ws‘failed:
  19. 美国 计算机与艺术 专业,美国加州大学圣地亚哥分校计算机与艺术专业.pdf
  20. 抑郁研究所融资历程分享--以太一堂--直播课

热门文章

  1. 不用下载软件,mac自带丰富快捷键截图Ctrl+shift+4
  2. 新年新气象,从SQL Server 2019新特性开始!
  3. 转 zookeeper启动为什么占用8080端口,修改哪个配置文件可以改变端口?
  4. 一些sql语句的详细解释
  5. 谷歌为安卓系统加入Fast Pair技术 蓝牙耳机将实现设备自动切换
  6. 苹果宣布将把语音助手Siri整合到Apple Music服务中
  7. 跌落测试显示:iPhone 13/13 Pro耐用性和前代几乎相同
  8. 首发骁龙898!小米12系列屏幕方案曝光:双曲面屏+全新封装工艺
  9. 亚马逊新任CEO本周一上任 未来十年将获价值2.1亿美元公司股票
  10. 张朝阳:未来文娱重点将拍更多网剧 发展UGC、短视频社交和直播社交