정규 표현식 일치
"."은(는) 단일 문자와 일치합니다.
"*"는 앞에 있는 요소의 0개 이상과 일치합니다.
일치는 입력 문자열 전체를 덮어써야 합니다. (부분이 아니라.)
예1:
입력:s="aa", p="a"
출력:false
설명: "a"는 전체 문자열 "aa"와 일치하지 않습니다.
예2:
입력:s="aa", p="a*"
출력:트루
설명: "*"는 앞에 있는 요소 "a"의 0개 이상을 나타냅니다.그래서'a'를 한 번 반복하면'aa'가 된다.
예3:
입력:s="ab", p="
출력:트루
설명: "모든 문자(.)를 나타내는 "0개 이상(*)"입니다.
제한 사항:
1<=s. 길이<=20
1<=p. 길이<=30
s 소문자만 포함됩니다.
p는 소문자','만 포함,및 ""이(가) 있습니다.
'' 문자가 나타날 때마다 이전의 유효한 문자가 일치하도록 보장합니다.
* 코드: -*
def isMatch(self,s:str,p:str)->bool:
자아로 돌아가다.isMat(s,p,len(s)-1,len(p)-1,False)
def isMat(self, s: str, p: str, si: int, pi: int, isAst):
if pi < 0:
return si < 0
if p[pi] == '*':
return self.isMat(s, p, si, pi-1, True)
result = False
if isAst:
if si >= 0 and self.compare(s[si], p[pi]):
result = result or self.isMat(s, p, si-1, pi, True)
result = result or self.isMat(s, p, si, pi-1, False)
elif si >= 0 and self.compare(s[si], p[pi]):
result = result or self.isMat(s, p, si-1, pi-1, False)
return result
def compare(self, a, b):
return a == b or a == '.' or b == '.'
Reference
이 문제에 관하여(정규 표현식 일치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sinhajoy/regular-expression-matching-90f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)