LeetCode之Wildcard Matching
2015-07-06 21:39
190 查看
/*这里的难度主要是理解题意,题中要点如下: 1.字符‘?’能匹配任何单个字符; 2.字符‘*’能匹配任意长度的任意字符串。(这说明p中‘*’可以用来匹配s中0个、1个、2个...n个字符) 根据以上题意,遍历p中*所有的匹配情况,即可获得解答方法。*/ class Solution { public: bool isMatch(string s, string p) { int i(0), j(0); int s_match_star(-1), p_star(-1); while(i < s.size()){ if(p[j] == '*'){ while(p[j] == '*') ++j; p_star = j - 1;//记录‘*’号所在位置 s_match_star = i;//s中,对应于p中‘*’所出现的值 } else if(p[j] == '?' || s[i] == p[j]){ ++i; ++j; } else{ if(p_star == -1) return false;//不存在‘*’号,则不匹配 j = p_star + 1; i = s_match_star + 1; s_match_star = i; } } while(j < p.size() && p[j] == '*') ++j; if(j < p.size()) return false; return true; } };
相关文章推荐
- C语言基本数据类型及其扩展和可移植性问题
- 我的第二次北京之旅
- [安卓基础] 007.管理Activity的生命周期
- 使用事件通道
- Java模板模式(Template模式)
- Python图像处理(15):SVM分类器
- java并发4-单例设计方法
- 谈论开源技术选择
- 开启博客之路
- msp430学习笔记之时钟
- android 实践- 2015/07/06
- Android 进阶学习:Android LayoutInflater原理分析,带你一步步深入了解View(一)
- php5.3.x连接MS SQL server2008
- Javascript 正则表达式笔记
- 【bzoj2510】弱题 概率dp+循环矩阵矩阵乘法
- LeetCode216:Combination Sum III
- 命令模式,状态模式和职责链模式的不同
- 二叉树重建
- linux 系统下查看raid信息,以及磁盘信息
- 经典排序算法