持之以恒
分类: C/C++
2010-08-28 12:48:10
t中含有*,s中没有,t和s是否匹配的问题.
(1)当*t不是*的时候, 就像普通的串匹配一样, 移动s和t
(2)当*t是*的时候, 假设*t后面第一个不是*的字符是x, 若x是null, 直接匹配成功,
否则在s中找到当前位置后所有字符x的位置, 这时候问题转化成了t中x后的串和s中当前位置以后所有以x为开始的串的匹配问题,递归调用即可, 其中任意一个匹配成功, 则原串匹配成功, 若都没有匹配成功则匹配失败.
//当*s和*t其中一个是null时 跳出循环, 若此时 *t == '*', 则++t 直到 t != '*', 这时若 *t == 0 则代表匹配成功, 否则匹配失败
#include
#include
#include
using namespace std;
bool is_match(const char * s, const char * t) |
int main(int argc, char * argv[]) |