面试常遇到的通配符匹配的两个小问题总结
来源:互联网 发布:蒙语输入法软件下载 编辑:程序博客网 时间:2024/06/05 09:06
题目一:给定两个字符串s和p,s为原串,p为含有通配符的串,其中关于通配符的定义为:“*”表示可以匹配任意字符串,“.”表示可以匹配任意字符
class Solution{public: bool isMatch(const char *s, const char *p) { if (*s == '\0') { while(*p == '*') p++; return *p == '\0'; } if (*p == '\0') return false; while (*s && *p) { if (*s != *p) { if (*p == '?') s++, p++; else if (*p == '*') { while(*p == '*') p++;//跳过连续的*号 if (*p == '\0') return true;//如果跳过*号就到达结尾,那么是匹配的 while (*s) { if (isMatch(s, p)) return true;//不停的尝试 s++; } } else return false; } else s++, p++; } return isMatch(s, p); }};
题目二:给定两个字符串s和p,s为原串,p为含有通配符的串,其中关于通配符的定义为:“*”表示前面的字符可以出现任意多次(包括 0),“.”表示可以匹配任意字符
class Solution{public: bool isMatch(const char *s, const char *p) { if (s == NULL || p == NULL) return false; if (*p == '\0') return *s == '\0'; if (*(p+1) == '*') { // // notice: ".*" means repeat '.' 0 or more times // while ((*s != '\0' && *p == '.') || *s == *p) { if (isMatch(s, p + 2)) return true; s += 1; } return isMatch(s, p + 2); } else if ((*s != '\0' && *p == '.') || *s == *p) { return isMatch(s + 1, p + 1); } return false; }};
0 0
- 面试常遇到的通配符匹配的两个小问题总结
- 带有通配符的两个字符串匹配问题
- 55个常遇到的面试问题
- java软件工程师面试常遇到的问题
- 面试jQuery常遇到的问题
- 面试常遇到的成绩排序问题
- Java面试笔试常遇到的问题
- SQL常遇到的小问题整理
- Android常遇到的面试
- 遇到的面试问题总结
- 有关于面试常遇到的问题回答,以及解决方案。
- DC匹配中遇到的小问题
- 应届生找工作常遇到的一些小问题
- 关于开发中日常遇到的小问题
- 自定义控件遇到的两个小问题
- 记录最近遇到的两个小问题
- ubuntu 常遇到的问题
- 一些常遇到的问题
- boost.asio系列——io_service
- Weex详解:灵活的移动端高性能动态化方案
- 从头认识多线程-2.12 synchronized标记的方法和synchronized(this)标记的代码块锁定的是当前对象
- User-Interface第一part的复习总结
- jq记录
- 面试常遇到的通配符匹配的两个小问题总结
- ZJNU - 1433 [a,b]区间素数的个数
- 观察者模式
- vi 命令总结
- 学习篇---自定义SiderBar
- [BZOJ1088] 扫雷游戏mine
- 艺术编程入门(2)----认识一下Processing
- 剑指offer:滑动窗口的最大值
- 阿里无线的雄心壮志