10. Le match d'expression régulière
Donnez-vous une chaîne de caractères s et une loi p, vous invite à mettre en œuvre un support « » et « * » dans la correspondance d'expression régulière.
« » Correspond à un seul caractère
« * » correspond à zéro ou plus de l'élément précédent que l'
on appelle l' appariement, afin de couvrir de la chaîne entière, et non une partie de la chaîne.
Description:
s peut être vide, et que des lettres minuscules az du.
p peut être vide et contenir des lettres minuscules que de az, et les caractères. et *.
Exemple 1:
Entrée:
S = "AA"
P = "A"
Sortie: fausse
interprétation: "a" peut ne pas correspondre à la chaîne entière "aa".
Exemple 2:
Entrée:
S = « AA »
P = « A * »
Output: vrai
explication: parce que les « * » correspond à zéro ou les représentants de ce qui précède que une pluralité d'éléments, ceci est en face de l'élément « a ». Ainsi, la chaîne « aa » peut être considéré comme « un » est répétée une fois.
Exemple 3:
Entrée:
S = "ab &"
P = "*."
Output: vrai
expliqué: "*" désigne zéro ou plusieurs correspondances ( '*') de caractère ( '').
Exemple 4:
Entrée:
S = "AAB"
P = "C * A * B"
Output: vrai
explication: parce que les '*' signifie zéro ou plus, où 'c' est 0, 'a' est répété une fois. Il peut donc correspondre à la chaîne « AAB ».
Exemple 5:
Entrée:
S = "Mississippi"
P = "MIS * EST * P *."
Sortie: false
Classe Solution:
def isMatch (auto, s: str, p: str) -> bool:
dp = [[Faux] * (len (p) + 1) pour _ dans la plage (len (s) + 1)]
dp [-1] [- 1] = Vrai
pour i dans la plage (LEN (s), -1, -1):
pour j dans la plage (len (p) - 1, -1, -1):
first_match = i <len (s) et p [j] dans {s [i], ''}
si j + 1 <len (p) et p [j + 1] == '*':
dp [i] [j] = dp [i] [j + 2] ou first_match et dp [i + 1] [j]
else:
dp [i] [j] = first_match et dp [i + 1] [j + 1]
dp de retour [0] [0]