(C++)剑指offer-52:正则表达式匹配(字符串)

xiaoxiao2021-02-28  43

剑指offer-52:正则表达式匹配

目录

剑指offer-52正则表达式匹配目录 1题目描述2题目解析3题目答案

1题目描述

请实现一个函数用来匹配包括’ . ‘和 ’ * ‘的正则表达式。

模式中的字符’ . ‘表示任意一个字符,而’ * ‘表示它前面的字符可以出现任意次(包含0次)。

在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配

2题目解析

3题目答案

class Solution { public:     bool match(char* str, char* pattern){         if (*str == '\0' && *pattern == '\0') return true;         if (*str != '\0' && *pattern == '\0') return false;         //if the next character in pattern is not '*'         if (*(pattern+1) != '*'){             if (*str == *pattern || (*str != '\0' && *pattern == '.'))                 return match(str+1, pattern+1);             else                 return false;         }         //if the next character is '*'         else{             if (*str == *pattern || (*str != '\0' && *pattern == '.'))                 return match(str, pattern+2) || match(str+1, pattern); //str='a',pattern='a*' 匹配1个 //str='aa',pattern='a*'             else                 return match(str, pattern+2); //如果str='a', pattern='b*a'匹配0个         }     } };
转载请注明原文地址: https://www.6miu.com/read-2623258.html

最新回复(0)