您的位置:首页 > 其它

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: