(每日一练28831)题目名称:字符串转换

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-04-20 08:48:28

已知一个字符串a,b。 字符串b中包含特殊符号’.’,’’。 ‘.’表示该字符可以变成任意字符,’ ‘表示该字符的前一个字符可以变成任意多个。 现在我们想知道b可否通过特殊符号变成a。 a* 可以转化为a,aa,aaa,aaaa…
第一行输入字符串a.(1<=len(a)<=1000)
第二行输入字符串b.(1<=len(b)<=1000)
如果可以输出”yes”,否则输出’no’

这个题目,和 leetcode 的第 44 题一模一样了,leetcode 的描述如下

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。
‘.’ 匹配任意单个字符
'*’ 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

那么如果有兴趣的话,可以到 leetcode 里看题解,也可以看看老顾的实现

不过,今天咱们就偷个懒,直接用现成的正则完成题目就好。

import re
s,p = input(),input()
pattern = re.sub('^[\*]','',re.sub(r'[\*]+','*',p))
print('yes' if len(pattern) > 0 and re.fullmatch(pattern,s) else 'no')

这里对输入的 p 字符串进行了一些预处理,比如多个星号合并为1个星号,开头星号干掉,最后验证匹配规则长度大于0,用 fullmatch 来进行完全匹配验证

js 版本也类似,唯一区别就是没有 fullmatch 类似的方法,需要自己加 ^ 和 $

var s = readline();
var p = readline().replace(/[\*]+/gi,'*').replace(/^[\*]/gi,'');
print(p && new RegExp('^' + p + '$','gi').test(s) ? 'yes' : 'no');
...全文
168 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧