面试题

判断一个字符串的构成是词+空格的组合,如"上海 深圳 深圳 上海",要求输入一个匹配模式,
比如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,判断是否符合相关推荐

  1. python将一个字符串反转并输出_逆转字符串—输入一个字符串,将其逆转并输出。...

    实现Python字符串反转有4种方法: 1.列表的方式: def rev(s): a = list(s) a.reverse() return (''.join(a)) a = rev('huowuz ...

  2. 《Python Cookbook 3rd》笔记(2.7):最短匹配模式

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

  3. python中成绩及格判断代码_用python输入一个百分制考试成绩,判断是否及格并输出结果?...

    展开全部 || /*求编程:输入32313133353236313431303231363533e78988e69d8331333433636234学生成绩,判断该成绩的等级;............ ...

  4. 角谷定理python每次输出数_角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。...

    角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1.经过如此有限次运算后,总可以得到自然数值1.求经过多少次可得到自然数1. 如:输入22, 输出 22 11 34 17 5 ...

  5. python输入一个四位整数_Python 四位一并法

    0x00 题目 请写一个 Python 程序实现实数的「三位一并法」与「四位一并法」.输入一个八进制小数,利用三位一并法将其转换为二进制实数,并输出,再利用四位一并法将上一步得到的二进制实数转换为十六 ...

  6. python逆序输出字符串_python实现对指定输入的字符串逆序输出的方法

    这篇文章主要介绍了python实现对指定输入的字符串逆序输出的6种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作 ...

  7. 中国三大互联网中心:北京、上海、深圳,你 Pick 哪个?

    作者 | 汇泉春晓 出品 | 程序人生 (ID:coder _life) 正如美国拥有科技和互联网中心--旧金山湾区硅谷和西雅图,经历了这么多年的发展,中国也形成了互联网和科技中心,比较著名的有北京海 ...

  8. 三大互联网中心:北京、上海、深圳,你 Pick 哪个?

    作者 | 汇泉春晓 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 正如美国拥有科技和互联网中心--旧金山湾区硅谷和西雅图,经历了这么多年的发展,中国也形成了互联网和科技中心, ...

  9. 【印象】2016云栖大会城市峰会:上海、深圳、南京、北京等精彩复现

    2016年,云栖大会城市峰会陆续走过了9座城市,云栖社区特此打包峰会的概要,方便大家好好温习. 作为"世界级·现象级"的大会,2017云栖大会将于10月11-14日在杭州云栖小镇举 ...

  10. 找上海或深圳塑胶模具工作

    有10多年塑胶模具工作经验的老技术师傅,欲在上海或深圳找塑胶模具师工作 转载于:https://www.cnblogs.com/think/archive/2008/01/13/1037008.htm ...

最新文章

  1. 无限轮播的N+2 策略
  2. 语言深入:java中究竟是传值还是传引用
  3. 大数据告诉你,电商都把假货发给谁?
  4. 微前端与项目实施方案研究
  5. html div数据替换,在contenteditable div中替换innerHTML
  6. 摩擦力特点用计算机绘制出,AGC液压缸模拟工况摩擦力特性测试方法研究
  7. swift实现队列_Swift队列数据结构实现
  8. EEGLAB在MATLAB中的下载、安装教程
  9. luma3ds7.1按start键开机无法启动payload解决
  10. Readhub App 上架 Google Play Store 实录及技术要点总结
  11. 【第三届蓝桥杯】手机尾号
  12. 如何低成本快速积累用户,分享4种无脑式操作
  13. pat甲级考试报名费_2019吉林省公务员考试笔面心得
  14. 最大素因子c语言,附上2021欧洲杯赛程时间表 -官网
  15. java继承求三角形圆形面积_java求三角形面积
  16. 虚拟机磁盘重新分区增加Docker磁盘空间
  17. 弗洛伊德,迪杰斯特拉算法
  18. BigDecimal 科学计数法转换 正负数转换
  19. 应用程序无法正常启动 0xc000000d
  20. Hello World小程序笔记

热门文章

  1. 微信小程序 - requestSubscribeMessage:fail can only be invoked by user TAP gesture.
  2. 用友t3服务器系统管理软件,T3用友通系统管理常见问题及解决方案
  3. hdfs高可用与高拓展机制分析
  4. 网易云信七年:「连接者」背后的「放大器」
  5. 【03项目立项管理】【理解版】
  6. CSDN页面上方广告条太烦人?js写个油猴脚本给它隐藏了~
  7. 算法设计与分析递归概念之Fibonacci数列
  8. 饥饿的小易(BFS问题)
  9. 爬虫的初步进阶||正则表达式+BeautifulSoup处理特殊标签实现多级网页跳转的信息爬取
  10. prometheus的remote write功能