LeetCode之Wildcard Matching

原创 2015年07月06日 21:39:52
/*这里的难度主要是理解题意,题中要点如下:
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;
    }
};

相关文章推荐

★leetcode44_Wildcard Matching

一.问题描述 Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any singl...

LeetCode: 44. Wildcard Matching

44. Wildcard Matching

leetcode第一刷_Wildcard Matching

又好又难的题。 我发现难题一般都包含了好几个简单题,必须对一些基本的算法熟练掌握才能快速准确的写出代码。这个题就用到了kmp,这个算法写过好多遍,还是不断的出错,哎。 题目中有两种符号,?可以匹配...

【leetcode】Wildcard Matching

分析: * 可以匹配任意个字符,包括0个多个连续的*的作用相当于1个*。* 后无其他字符,则直接匹配出现*p为 *,而*s为字符时,我们有两种选择,一种是跳过*p指示的*,也就是令*匹配0个...

Leetcode: Wildcard Matching

Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character....
  • doc_sgl
  • doc_sgl
  • 2013年10月15日 00:21
  • 5767

【LeetCode】44. Wildcard Matching解法及注释

44. Wildcard Matching Implement wildcard pattern matching with support for '?' and '*'. 1. '?' Mat...

LeetCode 044 Wildcard Matching

题目要求用模式串p匹配字符串s。p中可含有通配符’?’,’*’。’?’表示匹配任意一个字符,’*’表示匹配空串或任意字符串。...

leetcode 44. Wildcard Matching

Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character....

[Leetcode] Wildcard Matching (Java)

Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode之Wildcard Matching
举报原因:
原因补充:

(最多只允许输入30个字)