剑指offer | 训练题51:正则表达式匹配
来源:互联网 发布:淘宝服装搭配 编辑:程序博客网 时间:2024/06/12 20:12
题目描述
请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配
思路
/** * 思路: * 当模式中的第二个字符不是“*”时: 1、如果字符串第一个字符和模式中的第一个字符相匹配,那么字符串和模式都后移一个字符,然后匹配剩余的。 2、如果字符串第一个字符和模式中的第一个字符相不匹配,直接返回false。 * 而当模式中的第二个字符是“*”时: 如果字符串第一个字符跟模式第一个字符不匹配,则模式后移2个字符,继续匹配。如果字符串第一个字符跟模式第一个字符匹配,可以有3种匹配方式: 1、模式后移2字符,相当于x*被忽略; 2、字符串后移1字符,模式后移2字符; //这一步不需要执行也行,3和1串联就等于2 3、字符串后移1字符,模式不变,即继续匹配字符下一位,因为*可以匹配多位; */class Solution {public: bool match(char* str, char* pattern) { if(str == NULL || pattern == NULL) return false; return matchkey(str, pattern); } bool matchkey(char* str, char* pat){ //如果两个索引都走到了尽头,说明匹配成功了 if(*str == '\0' && *pat == '\0') return true; //如果pattern先走到头的,说明匹配失败了 if(*str != '\0' && *pat == '\0') return false; //pattern中第二个字符是“*”,看一下第一个字符是否匹配 if(*(pat+1) == '*'){ //如果第一个字符是匹配的 if((*str != '\0' && *pat == '.') || *pat == *str){ //1. 模式后移2字符,相当于x*被忽略 return matchkey(str, pat+2) || //3. 字符串后移1字符,模式不变,即继续匹配字符下一位,因为*可以匹配多位 matchkey(str+1, pat); }else{ return matchkey(str, pat+2); } } //pattern中第二个字符不是“*”,分三种情况 //如果遇到了'.' if(*str != '\0' && *pat == '.'){ return matchkey(str+1, pat+1); } //如果遇到相同的字符 if(*str != '\0' && *str == *pat){ return matchkey(str+1, pat+1); }else{ //否则,返回错误 return false; } }};
阅读全文
0 0
- 剑指offer | 训练题51:正则表达式匹配
- 【剑指offer】题53:正则表达式匹配
- 《剑指offer》正则表达式匹配
- 剑指offer--正则表达式匹配
- 剑指offer:正则表达式匹配
- [剑指offer]正则表达式匹配
- 剑指offer-正则表达式匹配
- 剑指offer|正则表达式匹配
- 《剑指offer》-正则表达式匹配
- 剑指offer-正则表达式匹配
- 【剑指offer】正则表达式匹配
- 【剑指offer】正则表达式匹配
- 剑指offer-正则表达式匹配
- 剑指offer:正则表达式匹配
- 剑指Offer---正则表达式匹配
- 剑指Offer 53题 正则表达式匹配 Java版
- 剑指offer——正则表达式匹配(好题)
- 《剑指offer》刷题笔记(字符串):正则表达式匹配
- python基础_1
- Codeforces Beta Round #7 D. Palindrome Degree —— hash
- 浅谈Three.js源码-render之WebGLShader.js
- NuttX实时操作系统
- jboss容器,web整站https环境下使用(spring mvc)redirect重定向到http协议问题
- 剑指offer | 训练题51:正则表达式匹配
- MOS管
- 屏幕记录机BB FlashBack v5.26.0发布丨附下载
- 110. Balanced Binary Tree验证平衡二叉树
- Sublime Text-Snippet的使用
- Sublime Text3 安装插件出错 There are no packages available for installation
- Struts2+POI 实现生成Excel文件和下载
- idea --maven project 工具条不见了 maven 项目引进来报错
- Jmeter使用CSV Data Set Config参数化数据不重复的多次循环执行(实现多用户多次抽奖功能)