python面试题-如“上海 深圳 深圳 上海“,要求输入一个匹配模式,比如: aabb,判断是否符合
面试题
判断一个字符串的构成是词+空格的组合,如"上海 深圳 深圳 上海",要求输入一个匹配模式,
比如aabb,来判断该字符串是否符合该模式
1.pattern=“abba” s=“上海 深圳 深圳 上海” 返回true
2.pattern=“aabb” s=“上海 深圳 深圳 上海” 返回false
3.pattern=“baab” s=“上海 深圳 深圳 上海” 返回true
解决思路1
先写个匹配规则函数,如输入[“a”,“b”,“b”,“a”],函数返回[1, 2, 2, 1]
输入[“上海”, “深圳”, “深圳”, “上海”],函数返回[1, 2, 2, 1]
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/def pattern_rule(s1):"""传s1返回其匹配规则如:1221:param s1: s1是传入的list->["a","b","b","a"]或传入list->["上海", "深圳", "深圳", "上海"]:return: list->[1, 2, 2, 1]"""result = []temp = []num = 0for i in s1:if i not in temp:temp.append(i)num += 1result.append(num)else:result.append(temp.index(i)+1)return resultif __name__ == '__main__':s="上海 深圳 深圳 上海"print(pattern_rule(s.split(" ")))pattern="abba"print(pattern_rule(list(pattern)))
运行结果
[1, 2, 2, 1]
[1, 2, 2, 1]
通过判断函数返回的结果,来判断字符串是不是该模式
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/def pattern_rule(s1):"""传s1返回其匹配规则如:1221:param s1: s1是传入的list->["a","b","b","a"]或传入list->["上海", "深圳", "深圳", "上海"]:return: list->[1, 2, 2, 1]"""result = []temp = []num = 0for i in s1:if i not in temp:temp.append(i)num += 1result.append(num)else:result.append(temp.index(i)+1)return resultdef is_pattern(pattern="abba", s="上海 深圳 深圳 上海"):"""判断2个的结果是否一致"""r1 = pattern_rule(s.split(" "))r2 = pattern_rule(list(pattern))return "true" if r1 == r2 else "false"if __name__ == '__main__':print(is_pattern(pattern="abba"))print(is_pattern(pattern="aabb"))print(is_pattern(pattern="baab"))print(is_pattern(pattern="abc", s="上海 深圳 杭州"))
运行结果
true
false
true
true
解决思路2
直接拿2个字符串当成列表循环对比,用一个临时字典temp,保存为键值对格式:{‘a’: ‘上海’, ‘b’: ‘深圳’}
如果下一个key在字典中存在,就不添加字典,从字典取值跟s里面的值对比
如果下一个key在字典中不存在,就添加字典
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/def is_pattern(pattern="acba", s="上海 深圳 深圳 上海"):p1 = list(pattern)s1 = s.split(" ")if not p1 or not s1 or len(p1) != len(s1):return Falsetemp = {}flag = Truefor i in range(len(p1)):if p1[i] not in temp.keys() and s1[i] not in temp.values():temp[p1[i]] = s1[i]else:if temp.get(p1[i]) != s1[i]:flag = Falsereturn flagif __name__ == '__main__':print(is_pattern(pattern="abba", s="上海 深圳 深圳 上海"))print(is_pattern(pattern="acba", s="上海 深圳 深圳 上海"))print(is_pattern(pattern="baab", s="上海 深圳 深圳 上海"))print(is_pattern(pattern="abc", s="上海 深圳 北京"))print(is_pattern(pattern="aabc", s="上海 深圳 北京 上海"))print(is_pattern(pattern="abca", s="上海 深圳 北京 上海"))
运行结果
True
False
True
True
False
True
python面试题-如“上海 深圳 深圳 上海“,要求输入一个匹配模式,比如: aabb,判断是否符合相关推荐
- python将一个字符串反转并输出_逆转字符串—输入一个字符串,将其逆转并输出。...
实现Python字符串反转有4种方法: 1.列表的方式: def rev(s): a = list(s) a.reverse() return (''.join(a)) a = rev('huowuz ...
- 《Python Cookbook 3rd》笔记(2.7):最短匹配模式
最短匹配模式 问题 你正在试着用正则表达式匹配某个文本模式,但是它找到的是模式的最长可能匹配.而你想修改它变成查找最短的可能匹配. 解法 这个问题一般出现在需要匹配一对分隔符之间的文本的时候 (比如引 ...
- python中成绩及格判断代码_用python输入一个百分制考试成绩,判断是否及格并输出结果?...
展开全部 || /*求编程:输入32313133353236313431303231363533e78988e69d8331333433636234学生成绩,判断该成绩的等级;............ ...
- 角谷定理python每次输出数_角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。...
角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1.经过如此有限次运算后,总可以得到自然数值1.求经过多少次可得到自然数1. 如:输入22, 输出 22 11 34 17 5 ...
- python输入一个四位整数_Python 四位一并法
0x00 题目 请写一个 Python 程序实现实数的「三位一并法」与「四位一并法」.输入一个八进制小数,利用三位一并法将其转换为二进制实数,并输出,再利用四位一并法将上一步得到的二进制实数转换为十六 ...
- python逆序输出字符串_python实现对指定输入的字符串逆序输出的方法
这篇文章主要介绍了python实现对指定输入的字符串逆序输出的6种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作 ...
- 中国三大互联网中心:北京、上海、深圳,你 Pick 哪个?
作者 | 汇泉春晓 出品 | 程序人生 (ID:coder _life) 正如美国拥有科技和互联网中心--旧金山湾区硅谷和西雅图,经历了这么多年的发展,中国也形成了互联网和科技中心,比较著名的有北京海 ...
- 三大互联网中心:北京、上海、深圳,你 Pick 哪个?
作者 | 汇泉春晓 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 正如美国拥有科技和互联网中心--旧金山湾区硅谷和西雅图,经历了这么多年的发展,中国也形成了互联网和科技中心, ...
- 【印象】2016云栖大会城市峰会:上海、深圳、南京、北京等精彩复现
2016年,云栖大会城市峰会陆续走过了9座城市,云栖社区特此打包峰会的概要,方便大家好好温习. 作为"世界级·现象级"的大会,2017云栖大会将于10月11-14日在杭州云栖小镇举 ...
- 找上海或深圳塑胶模具工作
有10多年塑胶模具工作经验的老技术师傅,欲在上海或深圳找塑胶模具师工作 转载于:https://www.cnblogs.com/think/archive/2008/01/13/1037008.htm ...
最新文章
- 无限轮播的N+2 策略
- 语言深入:java中究竟是传值还是传引用
- 大数据告诉你,电商都把假货发给谁?
- 微前端与项目实施方案研究
- html div数据替换,在contenteditable div中替换innerHTML
- 摩擦力特点用计算机绘制出,AGC液压缸模拟工况摩擦力特性测试方法研究
- swift实现队列_Swift队列数据结构实现
- EEGLAB在MATLAB中的下载、安装教程
- luma3ds7.1按start键开机无法启动payload解决
- Readhub App 上架 Google Play Store 实录及技术要点总结
- 【第三届蓝桥杯】手机尾号
- 如何低成本快速积累用户,分享4种无脑式操作
- pat甲级考试报名费_2019吉林省公务员考试笔面心得
- 最大素因子c语言,附上2021欧洲杯赛程时间表 -官网
- java继承求三角形圆形面积_java求三角形面积
- 虚拟机磁盘重新分区增加Docker磁盘空间
- 弗洛伊德,迪杰斯特拉算法
- BigDecimal 科学计数法转换 正负数转换
- 应用程序无法正常启动 0xc000000d
- Hello World小程序笔记
热门文章
- 微信小程序 - requestSubscribeMessage:fail can only be invoked by user TAP gesture.
- 用友t3服务器系统管理软件,T3用友通系统管理常见问题及解决方案
- hdfs高可用与高拓展机制分析
- 网易云信七年:「连接者」背后的「放大器」
- 【03项目立项管理】【理解版】
- CSDN页面上方广告条太烦人?js写个油猴脚本给它隐藏了~
- 算法设计与分析递归概念之Fibonacci数列
- 饥饿的小易(BFS问题)
- 爬虫的初步进阶||正则表达式+BeautifulSoup处理特殊标签实现多级网页跳转的信息爬取
- prometheus的remote write功能