• 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 == '';
        }
    };


  • 相关阅读:
    第一章 操作系统引论
    程序流程结构
    IE网页cab插件无法安装
    Java面试题整理(题目内容非原创)
    linux下安装字体
    博客园使用Silence主题装饰
    编码问题总结
    JUnit 4.10 新功能简介——RuleChain 和TemporaryFolder的应用
    Usage and Idioms——Rules
    Usage and Idioms——Theories
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10932764.html
Copyright © 2020-2023  润新知