【leetcode】Wildcard Matching
分析:
- * 能够匹配随意个字符,包含0个
- 多个连续的*的作用相当于1个*。
- * 后无其它字符。则直接匹配
- 出现*p为 *,而*s为字符时。我们有两种选择,一种是跳过*p指示的*。也就是令*匹配0个字符,继续向后匹配。
- 一种是我们须要用* 匹配多个字符,才干完毕匹配。
- * 后有其它字符,则在s串中向后找与该非*字符匹配的字符,若没找到,则不匹配,若找到了。则会有不同的情况。
- 用s中首次遇到的与p中*后的非*字符匹配
实现:
bool isMatch(const char *s, const char *p) { const char *backtrack_s = NULL;const char *backtrack_p = NULL; while (*s) { //match if (*p == '?
' || *s == *p) { ++s; ++p; } //don't match. else { //meet * if (*p == '*') { //skip multiply *. while (*p == '*') ++p; if (*p == '\0') return true; //record the next position of *. backtrack_s = s; backtrack_p = p; } // else {//注意:推断前面是否出现了* if (backtrack_p) { //注意:在当前位置往后推断出现不相等的时候,再又一次回到下一个位置又一次往后比較 //其意义是继续扩大*的作用范围。
s = ++backtrack_s; p = backtrack_p;//恢复p的位置 } //既不匹配。前面又没有*,这就是真的不匹配了。 else return false; } } } //end while while (*p == '*')//处理p末端的* ++p; return (*s == '\0' && *p == '\0'); }
转载于:https://www.cnblogs.com/zfyouxi/p/5287503.html
【leetcode】Wildcard Matching相关推荐
- 【LeetCode】字符串 string(共112题)
[3]Longest Substring Without Repeating Characters (2019年1月22日,复习) [5]Longest Palindromic Substring ( ...
- 【To Understand! 重点 递归 动态规划 正则表达式匹配】LeetCode 44. Wildcard Matching
LeetCode 44. Wildcard Matching Solution1:我的答案 递归,时间复杂度是O(2n)O(2n)O(2^n)因为超时未能AC 只是记录一下,以警示后人-- class ...
- 【Leetcode】100. 相同的树
题目 给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入: 1 1/ \ / \2 3 2 3[1,2,3], [1 ...
- 【leetcode】85. Maximal Rectangle 0/1矩阵的最大全1子矩阵
1. 题目 Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1 ...
- 【leetcode】486. Predict the Winner
题目如下: Given an array of scores that are non-negative integers. Player 1 picks one of the numbers fro ...
- 【leetcode】132. Palindrome Partitioning II
题目如下: 解题思路:本题是[leetcode]131. Palindrome Partitioning的升级版,要求的是求出最小cuts,如果用[leetcode]131. Palindrome P ...
- 【leetcode】86. Partition List
题目如下: Given a linked list and a value x, partition it such that all nodes less than x come before no ...
- 【Leetcode】103. 二叉树的锯齿形层次遍历
题目 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 ...
- 【Leetcode】79.单词搜索
题目 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单元格 ...
- 【leetcode】 算法题1 两数之和
[leetcode] 算法题1 两数之和 问题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...
最新文章
- 我对于js注入的理解
- LSGO软件技术团队招新
- 身份证校验程序(上)- 零基础入门学习Delphi48
- linux shell 和 golang 查询服务器硬件信息
- 【哲学】自由意志是什么?(主观能动性)
- 计算机基础课程在线教学授课方案,《计算机基础》课程分层次模块化教学实施方案...
- js微信小程序页面左上角返回跳转指定页面
- 小程序的点赞功能能和浏览次数功能_扫码点餐小程序好用吗?小程序还能实现哪些功能?...
- sed 执行错误:sed: 1: “…”: Invalid command code f
- lwip-1.4.1文档rawapi中文翻译
- sql脚本比较大,sqlserver 无法导入,就用cmd命令执行
- ajax iframe的使用方法,使用jQuery和ajax代替iframe的方法(详解)
- 合宙 4G模块Air720D Mini PCI-E 开发教程
- 联想微型计算机装Win10,联想小新 潮5000重装win10系统教程
- 腾云忆想技术干货|TSF微服务治理实战系列(一)——治理蓝图
- 已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None
- Android项目小结——硬解码(MediaCodec实现[MP4]转YUV420各种格式)
- 互联网摸鱼日报(2023-01-21)
- html与css游戏开发工具,html/css/js开发者必备的10款最佳工具
- 小故事——巴比奇和他的计算机
热门文章
- Nginx源码阅读 --- http模块 --- TCP连接过程
- Zookeeper C API 指南四(C API 概览)
- bgsave配置与工作流程
- JavaScript数据类型之Number
- JAVA怎么出现10行10列的星号_C语言输出n行n列星号
- while循环python的范围_为什么Python中的range()循环比使用while循环更快?
- 网易云音乐html代码_网易云音乐歌单列表导出方法!
- 2.3创建用户访问过滤器(安全性)
- 几个好用的makefile 几乎可以不用修改
- Django之forms组件使用