leetcod Wildcard Matching

来源:互联网 发布:泰丰售电软件 编辑:程序博客网 时间:2024/06/07 05:45
上来想到用递归求解,结果超时,先是考虑把多个连续的*合成一个*处理,仍然超时,最后在http://blogs.com/x1957/p/3517096.html处看到,可以通过类似回溯的方式求解
class Solution {public:    bool isMatch(const char *s, const char *p) {        const char* star = nullptr;        const char* rs = nullptr;                while(*s) {            if(*s == *p || *p == '?') { //match                s++; p++;                continue;            }            if(*p == '*') {                 star = p; // record star                p++; //match from next p                rs = s; // record the position of s , star match 0                continue;            }             if(star != nullptr) { //if have star in front then backtrace                p = star + 1; //reset the position of p                 s = rs + 1;                 rs ++; //star match 1,2,3,4,5....                continue;            }            return false; //if not match return false        }        while(*p == '*') p++; //skip continue star        return *p == '\0'; // successful match    }};


0 0