1. 程式人生 > >Regular Expression Matching 正則表示式匹配和遞迴

Regular Expression Matching 正則表示式匹配和遞迴

class Solution {
public:
    bool isMatch(const char *s, const char *p) {
        if (*p == 0) return *s == 0;  
        if (*(p+1) != '*')  
        {  
            if (*s != 0 && (*p == *s || *p == '.')) return isMatch(s+1, p+1);  
            else return false;  
        }  
        else  
        {  
            // *s == *p  
            while (*s != 0 && (*s == *p || *p == '.'))  
            {  
                if (isMatch(s, p+2)) return true;  //aa---a*huo.*;s指標不動,移動p指標
                s++;  //匹配不到就移動s指標;
            }  
            return (isMatch(s, p+2));  //從*之後重新找;aab--c*a*b
        }
    }
};