python :已知一个字符串a,b。 字符串b中包含特殊符号’.’,’*’。 ‘.’表示该字符可以变成任意字符,’* ‘表示该字符的前一个字符可以变成任意多个。 现在我们想知道b可否通过特殊符号变成a。 a* 可以转化为a,aa,aaa,aaaa…
时间: 2023-02-11 15:57:14 浏览: 157
python的字符串、转义字符、格式化字符
5星 · 资源好评率100%
题目要求判断字符串b能否通过特殊符号变成字符串a。其中'.'表示该字符可以变成任意字符,'*'表示该字符的前一个字符可以变成任意多个。
可以使用递归的方法来判断。从两个字符串的最后一个字符开始递归,如果b的当前字符是'.'或者和a的当前字符相同,则继续递归下一个字符。如果b的当前字符是'*',则分别递归b的当前字符和前一个字符出现0次、1次、2次...直到字符串a被匹配完。
代码示例:
```
def isMatch(s, p):
if not p:
return not s
first_match = bool(s) and p[0] in {s[0], '.'}
if len(p) >= 2 and p[1] == '*':
return (isMatch(s, p[2:]) or
first_match and isMatch(s[1:], p))
else:
return first_match and isMatch(s[1:], p[1:])
```
阅读全文