正規表示式匹配
題目:
請實現一個函式用來匹配包括’.‘和’‘的正規表示式。模式中的字元’.‘表示任意一個字元,而’'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"abaca"匹配,但是與"aa.a"和"aba"均不匹配
示例1
輸入:“aaa”,"aa"
返回值:true
思路:
- 用遞迴來模擬匹配邏輯,有無*是下一步判斷的關鍵
- 需要注意的是陣列越界,所以此處用python的切片來強調邏輯
程式碼:
# -*- coding:utf-8 -*-
class Solution:
# s, pattern都是字串
def match(self, s, pattern):
# write code here
if s==pattern: return True
if len(pattern)>1 and pattern[1]=="*":
if s and (s[0]==pattern[0] or pattern[0]=="."):
# 因為*可能前一個字元出現0次,所以用or來表示前一個字元是否出現0次的情況都是可以的
return self.match(s, pattern[2:]) or self.match(s[1:], pattern)
else:
return self.match(s, pattern[2:])
elif s and pattern and (s[0]==pattern[0] or pattern[0]=="."):
return self.match(s[1:], pattern[1:])
return False
相關文章
- python 正規表示式匹配Python
- 正規表示式 多行匹配
- 匹配字母正規表示式
- leetcode - 正規表示式匹配LeetCode
- 正規表示式匹配原理
- 字串——正規表示式匹配字串
- 匹配正整數正規表示式
- 正規表示式匹配漢字
- 正規表示式匹配問題
- 匹配護照正規表示式
- 匹配小數正規表示式
- 匹配負數正規表示式
- 匹配整數正規表示式
- 匹配自然數正規表示式
- 匹配航班號正規表示式
- 正規表示式支配匹配模式模式
- JavaScript匹配中文正規表示式JavaScript
- 10. 正規表示式匹配
- 正規表示式的多行匹配
- 正規表示式同時匹配中英文及常用正規表示式
- Leetcode 10. 正規表示式匹配LeetCode
- 匹配浮點數正規表示式
- 匹配二級域名正規表示式
- 匹配車牌號正規表示式
- 匹配純數字正規表示式
- 匹配html標籤正規表示式HTML
- 匹配400電話正規表示式
- JZ-052-正規表示式匹配
- 匹配 XML 檔案正規表示式XML
- 匹配 HTML 標籤正規表示式HTML
- 匹配空白字元正規表示式字元
- 轉|正規表示式之匹配中文
- 匹配空行正規表示式程式碼
- 匹配n位正整數正規表示式
- 匹配磁力連結的正規表示式
- 匹配銀聯卡號正規表示式
- 匹配手機號碼正規表示式
- 匹配身份證號碼正規表示式