题目描述

问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)
?:匹配1个字符
输入:
通配符表达式;
一组字符串。
输出:
返回匹配的结果,正确输出true,错误输出false

#include <iostream>
#include <string>
using namespace std;
bool match(const char* pattern, const char *str)
{
    if (*pattern == '\0' && *str == '\0')
        return true;
    if (*pattern == '\0' || *str == '\0')
        return false;
    if (*pattern == '?')
    {
        return match(pattern + 1, str + 1);
    }
    else if (*pattern == '*')
    {
        // 匹配0个1个或多个
        return match(pattern + 1, str) || match(pattern + 1, str + 1) || match(pattern, str + 1);
    }
    else if (*pattern == *str)
    {
        return match(pattern + 1, str + 1);
    }
 
    return false;
}
int main(void)
{
    string pattern, str;
    while (cin >> pattern >> str)
    {
        bool ret = match(pattern.c_str(), str.c_str());
        if (ret)
            cout << "true" << endl;
        else
            cout << "false" << endl;
    }
    return 0;
}

字符串通配符(递归)相关推荐

  1. 牛客- 字符串通配符

    链接: 字符串通配符 来源:牛客网 问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索.数据库.正则表达式等领域.现要求各位实现字符串通配符的算法. 要求: 实现如下2个通配符: :匹配0个 ...

  2. 统计每个月兔子的总数,字符串通配符

    题目:统计每个月兔子的总数 题目描述 有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少? 本题有多组数据. 输入描述: ...

  3. 牛客网 字符串通配符

    做题链接:字符串通配符__牛客网 (nowcoder.com) 要求:实现如下2个通配符(不区分大小写): *   :匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和数字0到9组成,下同) ...

  4. 牛客 - HJ71 字符串通配符

    牛客 解题思路: 通过递归求解. ①. 从前向后一次匹配,遇到相同字符,都向后移动一个字符, ②. 如果通配符遇到"?",则不需匹配,自动跳过一个字符, ③. 如果通配符遇到&qu ...

  5. [Leedcode][JAVA][第680题][验证回文字符串Ⅱ][贪心][递归]

    [问题描述][第680题][验证回文字符串Ⅱ][简单] 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串.示例 1:输入: "aba" 输出: True 示例 2 ...

  6. LeetCode 606. 根据二叉树创建字符串(递归)

    文章目录 1. 题目 2. 递归解题 1. 题目 你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串. 空节点则用一对空括号 "()" 表示.而且你需要省略所 ...

  7. (递归)LeetCode基础练习,反转字符串(递归和非递归算法)C++ Day1打卡

    344反转字符串 题目描述如下 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) ...

  8. c++字符串全排列递归法

    网上关于字符串全排列的代码一大堆,总体而言分为递归法和非递归法两种实现.虽然递归法原理简单,代码简洁,但是我观察众多博客来看,没有把代码讲透,只有透过代码才能看清算法的本质. 问题:输入一字符串(要求 ...

  9. 如何快速理解递归——蓝桥杯 试题 基础练习 FJ的字符串(递归与非递归解法)——10行代码AC

    励志用少的代码做高效的表达. 注意点: 1.规律 2.非递归解法:string重载了+=运算符,因此用string会方便很多.并且string动态扩充,防浪费,更高效. 3.递归解法:官方的标签就是递 ...

  10. C语言逆序字符串(递归实现)

    算法思想 以字符串"abcdef"为例 1.将a保存到temp中 2.将f放到a的位置 3.f处填写'\0' 4.计算bcde的长度 5.如果bcde的长度大于1,则逆序 6.将a ...

最新文章

  1. Windows 窗体设计器中的设计时错误
  2. 2.2 图像类型转换
  3. 在linux上实现cgi内容在网页上显示
  4. 2016年第2本:选择的悖论
  5. 垃圾收集器与内存分配策略(五)之垃圾日志与常见参数
  6. Sereja and Brackets CodeForces - 380C (线段树+分治思路)
  7. javascript --- 让函数的实例可以链式调用
  8. 支付宝小程序组件库开发之手写板组件
  9. 过滤器为JSP文件生成静态页面
  10. fiddler手机抓包 443
  11. Poi 为word 添加页眉 获取页眉
  12. Vue3 Composition API教程
  13. 全球第一个完整的Angular 2.0系列视频教程,大漠穷秋
  14. Python实现两两交换链表中的节点
  15. 洛谷 P2517 [HAOI2010]订货
  16. python--转换wrf输出的风场数据为网页可视化的json格式
  17. openEuler Summit | 江大勇:凝聚创新力量 逐梦数字时代星辰大海
  18. 【微信生态圈】-谈谈我的学习经验
  19. AI脚本插件开发-批量加边框-图层边框-可视边界-黑色描边-插件制作源码-illustrator插件开发
  20. [codeforces366C]Dima and Salad

热门文章

  1. 新年跨出第一步:人工智能实施这样做!
  2. 《HTML5和JavaScript Web应用开发》——2.6 QA和设备测试
  3. java.util.concurrent.locks.LockSupport
  4. ARM给服务器厂商更多创新机会
  5. 使用Java调用默认浏览器打开指定网址
  6. VS2010与.NET4系列 13. ASP.NET 4 SEO 改进
  7. 用VC实现洪水***程序
  8. family album U.S.A 02
  9. Java中直接输出一个类的对象
  10. ThinkPHP自定义404页面