首页 > 其他分享 >HJ71_字符串通配符_多维递归

HJ71_字符串通配符_多维递归

时间:2023-04-08 15:12:39浏览次数:34  
标签:return 递归 通配符 sys flag HJ71 多维 check

思路:1、对比字符最后一个,对比字符倒数第二个,一致对比到最后一个,如此递归。

2、该题符合多维递归,回溯判断。

遇到“*”通配符时,列举三种不同参数传递的递归情况,分叉递归以达到穷举的效果。(回溯)

3、结束条件:两字符串均为空,不计算“*”字符

具体,如代码所示。

#*只能匹配数字或字母0个或无数个
#?只能匹配一个数字或字母
#匹配不区分大小写

编程坑:

1、return的使用

2、多层调用return的返回

 

程序:

 1 import sys
 2 a=sys.stdin.readline().strip()
 3 b=sys.stdin.readline().strip()
 4 a=list(a.lower())
 5 b=list(b.lower())
 6 flag=[]
 7 def check(a,b):
 8     if a==[] and b==[]:
 9         flag.append(1)
10         return
11     elif len(set(a))==1 and "*" in a:
12         flag.append(1)
13         return
14     if a==[] or b==[]:#如有一个为空则返回,防止后面判断数组超限。不能说明TRUE,也不能说明是false.
15         return
16     if a:        
17         if a[-1]=="*":
18             if b[-1].isdigit() or b[-1].isalpha():
19                 #考虑到多种情况,多维递归在这里产生
20                 check(a[:-1],b[:-1])#当*存在时,当数列分别除掉最后一个元素继续比较
21                 check(a,b[:-1])#当*存在时,除掉b最后一个元素继续比较a数列
22                 check(a[:-1],b)#当*存在时,除掉a最后一个元素继续比较b数列
23         elif a[-1]=="?":
24             if b[-1].isdigit() or b[-1].isalpha():
25                 check(a[:-1],b[:-1])
26         else:
27             if a[-1]==b[-1]:
28                  check(a[:-1],b[:-1])
29 check(a,b)
30 if 1 in flag:
31     print("true")
32 else:
33     print("false")

 

标签:return,递归,通配符,sys,flag,HJ71,多维,check
From: https://www.cnblogs.com/tanyuanqing/p/17298585.html

相关文章

  • Jmeter压测生成多维度图形化HTML测试报告讲解
     Jmeter压测生成多维度图形化HTML测试报告讲解dashboard讲解TestandReportinformationsSourcefile:jtl文件名StartTime:压测开始时间EndTime:压测结束时间Filterfordisplay:过滤器Lable:sampler采样器名称APDEX(ApplicationperformanceIndex)apdex:应......
  • linux-通配符
    Linux通配符主要用户模糊查找文件,常用的Linux通配符如下表所示:名称作用*可以匹配任意数量任意字符?可以匹配一个任意字符[]可以匹配括号中的任意一个字符[^]可以匹配指定范围之外的任意单个字符示例:[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9......
  • 多维随机变量及其分布
    《二维随机变量》  注意在分布函数中P{X<=x且Y<=y}而且有性质:   这个性质在求概率密度的未知数时有用     这个公式结合一下二维前缀和算法就能很好明白了 《二维离散型随机变量》   ......
  • 220602-多维数组的Jaccard指数计算
    背景:计算两个多维数据的交并商a=np.arange(0,9).reshape(-1,3)print(a)b=np.arange(4,13).reshape(-1,3)print(b)c=np.random.rand(4,3)print(c,'\n')A=np.concatenate([a,c],axis=0)B=np.concatenate([b,c],axis=0)print(A)print(B)defjaccard_ind......
  • 使用篇丨链路追踪(Tracing)其实很简单:请求轨迹回溯与多维链路筛选
    作者:涯海在日常生活中,我们可能都经历过以下场景:去医院看病就诊,但预约页面迟迟无法打开;新款手机发布日促销秒杀,下单页面一直卡住转菊花;游戏大版本更新,在线人数过多,导致人物一直在“漂移”。这些问题令产品体验变得非常差,有耐心的同学还会吐槽几句,没耐心的同学早已转身离开。试想一下......
  • C语言逆向——数组和结构体,数组多维只是一个编译构造的假象,本质会转成一维数组,结构体
    数组数组是C语言中非常重要的一个概念,学习C语言主要就是两个知识点:数组、指针,学好这两个,那么你的C语言一定也会很好。什么是数组?或者说什么情况下我们需要使用数组,比如说我们需要定义一个人的年龄,我们可以定义一个变量来表示,但是如果我们需要定义三个人的年龄呢?那就需要三个变......
  • NOI 1.8编程基础之多维数组
    02:同行列对角线的格子1.描述输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中(行列均从1开始编号),与格子(i,j)同行、同列、同一对角线的所有格子的位置。如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图:第一列第二列第三列第四列     ......
  • PHP 多维数组搜索 PHP multi dimensional array search
    array_column()返回input数组中键值为column_key的列,如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。参数input需要取出数组......
  • 将一个多维数组整合成树形结构,可以通过递归函数来实现
    functionbuildTree(arr,parentId=null){lettree=[];for(leti=0;i<arr.length;i++){letitem=arr[i];if(item.parentId===parentId......
  • 通配符匹配-模糊匹配 判断文件是否存在
    1错误定向到/dev/nullfiles=$(lsmydir/*.jar2>/dev/null|wc-l);if["$files"!="0"];then#如果存在文件rmadonis/*.jar;fi2代码files=$(lsmydir/*.j......