zoukankan      html  css  js  c++  java
  • Wildcard matching

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/u012653791/article/details/37612385

    Implement wildcard pattern matching with support for '?' and '*'.

    '?

    ' Matches any single character. '*' Matches any sequence of characters (including the empty sequence). The matching should cover the entire input string (not partial). The function prototype should be: bool isMatch(const char *s, const char *p) Some examples: isMatch("aa","a") → false isMatch("aa","aa") → true isMatch("aaa","aa") → false isMatch("aa", "*") → true isMatch("aa", "a*") → true isMatch("ab", "?*") → true isMatch("aab", "c*a*b") → false


    class Solution {
    public:
        //主要是 * 的匹配。 p 每遇到一个 *, 就保存当前*的坐标和s的坐标。然后s继续往前扫描
        //假设不成功,则 s会到之前记录的下一个位置,又一次扫描
        bool isMatch(const char *s, const char *p) {
            if(s == nullptr || p == nullptr) return true;
            if(*p == '') return *s == '';
            const char *str(nullptr), *star(nullptr);
            while(*s) {
                if(*s == *p || *p == '?') {
                    ++s, ++p;
                    continue;
                }
                if(*p == '*') {
                    star = p;
                    str = s;
                    ++p;
                    continue;
                }
                if(*s != *p) {
                    if(str == nullptr) return false;
                    p = star;
                    s = ++str;
                    ++p;
                }
            }
            while(*p == '*') ++p;
            return *p == '';
        }
    };


  • 相关阅读:
    一个神秘现象引发对beego框架的思考
    利用golang优雅的实现单实例
    Go语言及Beego框架环境搭建
    go语言正则表达式
    爬取珍爱网后用户信息展示
    Django之modelform简介
    Django之分页功能
    Django之ORM操作
    selenium模拟鼠标操作
    Django之模型注册
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10932764.html
Copyright © 2011-2022 走看看