/*
题目:
实现一个函数用来匹配包含'.'和'*'的正则表达式。
'.'表示比配任意字符,‘*’表示匹配0个或多个字符串。
*/
/*
思路:
采用递归的方法。
基础条件:当字符串和模式串存在空的情况。
其它情况:考虑模式为'×*’的情况和不为‘×*'的情况。
*/
#include<iostream>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stdio.h>
using namespace std;
bool coreMatch(char* str,char* pattern){
//str或pattern有空的情况下
if(*str == '\0' && *pattern == '\0'){
return true;
}
if(*str != '\0' && *pattern == '\0'){
return false;
}
if(*str == '\0' && *pattern != '\0'){
if(*(pattern+1) == '*' ){
return coreMatch(str,pattern+2);
}
return false;
}
//str和pattern均不空
if(*(pattern+1) == '*'){
if(*pattern != *str && *pattern != '.'){
bool flag = coreMatch(str,pattern+2); return flag;
}else{
bool flag = (coreMatch(str,pattern+2) || coreMatch(str+1,pattern) || coreMatch(str+1,pattern+2)); return flag;
} }else if(*str == *pattern || *pattern == '.' ){
return coreMatch(str+1,pattern+1);
}
return false;
} bool match(char* str, char* pattern)
{
if(str == nullptr || pattern == nullptr){
return false;
}
return coreMatch(str,pattern);
} int main(){
cout<<coreMatch("",".*");
}

  

剑指offer-面试题19-正则表达式匹配-字符串的更多相关文章

  1. 剑指offer——面试题19:正则表达式匹配

    #include"iostream" using namespace std; bool MatchCore(char*str,char* pattern); bool Match ...

  2. 【剑指Offer】52、正则表达式匹配

      题目描述:   请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹 ...

  3. 剑指Offer:面试题19——二叉树的镜像(java实现)

    问题描述: 操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树结点定义为: public class TreeNode { int val = 0; TreeNode left = null; Tr ...

  4. C#版 - 226. Invert Binary Tree(剑指offer 面试题19) - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - 2 ...

  5. 剑指offer面试题19 二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像.  输入描述 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...

  6. 剑指Offer面试题:35.将字符串转换为数字

    一.题目:将字符串转换为数字 题目:写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用atoi或者其他类似的库函数. 二.代码实现 (1)考虑输入的字符串是否是NULL.空字符 ...

  7. 【剑指offer】面试题 19. 正则表达式匹配

    面试题 19. 正则表达式匹配

  8. 剑指Offer——笔试题+知识点总结

    剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...

  9. 剑指Offer:面试题15——链表中倒数第k个结点(java实现)

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

  10. 剑指offer面试题3 二维数组中的查找(c)

    剑指offer面试题三:

随机推荐

  1. Codeforces 1087B Div Times Mod(数学+暴力)

    题意: 求(x div k) * (x mod k) = n的最小解x,保证有解 1<=n<=1e6, k<=1000,1s 思路: 注意到k的范围是1e3, 1<=x mod ...

  2. ugligy 转

    3.配置gulpfile.js 3.1.基本使用 JavaScript 1 2 3 4 5 6 7 8 var gulp = require('gulp'),     uglify = require ...

  3. 《C# 爬虫 破境之道》:第二境 爬虫应用 — 第五节:小总结带来的优化与重构

    在上一节中,我们完成了一个简单的采集示例.本节呢,我们先来小结一下,这个示例可能存在的问题: 没有做异常处理 没有做反爬应对策略 没有做重试机制 没有做并发限制 …… 呃,看似平静的表面下还是隐藏着不 ...

  4. Netty学习(2):IO模型之NIO初探

    NIO 概述 前面说到 BIO 有着创建线程多,阻塞 CPU 等问题,因此为解决 BIO 的问题,NIO 作为同步非阻塞 IO模型,随 JDK1.4 而出生了. 在前面我们反复说过4个概念:同步.异步 ...

  5. ElasticSearch基础入门学习笔记

    前言 本笔记的内容主要是在从0开始学习ElasticSearch中,按照官方文档以及自己的一些测试的过程. 安装 由于是初学者,按照官方文档安装即可.前面ELK入门使用主要就是讲述了安装过程,这里不再 ...

  6. java中list的sort()功能如何使用?如果倒序如何正序?

    list.sort()接收一个Comparable接口,其中compare方法是必须实现的,int compare(T o1, T o2);,它接受两个参数:o1,o2. o2表示list排序前的前值 ...

  7. 推荐算法之因子分解机(FM)

    在这篇文章我们将介绍因式分解机模型(FM),为行文方便后文均以FM表示.FM模型结合了支持向量机与因子分解模型的优点,并且能够用了回归.二分类以及排序任务,速度快,是推荐算法中召回与排序的利器.FM算 ...

  8. 地址ip丢失

    好好的机器  ip地址没有了,好几台机器出现这个情况,目前判断是  NetworkManager  的问题: 先了解一下network和NetworkManager之间的区别,还有他们分别代表了什么. ...

  9. Kail Linux下载与安装

    官方镜像: https://www.kali.org/downloads/ 官方虚拟机镜像: https://www.offensive-security.com/kali-linux-vm-vmwa ...

  10. JS推箱子游戏

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...