首页 > 试题广场 >

字符串匹配

[编程题]字符串匹配
  • 热度指数:6515 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛有两个字符串A和B,其中A串是一个01串,B串中除了可能有0和1,还可能有'?',B中的'?'可以确定为0或者1。 寻找一个字符串T是否在字符串S中出现的过程,称为字符串匹配。牛牛现在考虑所有可能的字符串B,有多少种可以在字符串A中完成匹配。

例如:A = "00010001", B = "??"
字符串B可能的字符串是"00","01","10","11",只有"11"没有出现在字符串A中,所以输出3

输入描述:
输入包括两行,第一行一个字符串A,字符串A长度length(1 ≤ length ≤ 50),A中每个字符都是'0'或者'1'。
第二行一个字符串B,字符串B长度length(1 ≤ length ≤ 50),B中的字符包括'0','1'和'?'。


输出描述:
输出一个整数,表示能完成匹配的字符串种数。
示例1

输入

00010001
??

输出

3
头像 牛客167622957号
发表于 2022-08-13 17:55:21
A = input() B = input() arr = set() len_a = len(A) len_b = len(B) if len_b > len_a 展开全文
头像 草帽小子
发表于 2020-04-22 18:24:59
def solution(): # A = input() # B = input() A = '00010001' B = '??' lenA = len(A) lenB = len(B) res = [] for i in rang 展开全文
头像 绿糖
发表于 2022-03-27 19:42:52
主要思想:遍历a,将匹配b的a的子序列加入到set中,最后返回set的大小即可 let bb=readline();let as=new Set(); let l=0;//这里是需要l来记录a的子序列开始位置,这个子序列无论是匹配成功还是匹配失败,下一个子序列的开头都是a的第l+1 for(let 展开全文
头像 重生之我要当分子
发表于 2025-01-07 22:51:09
解题思路 使用正则表达式解决匹配问题: 将B串中的'?'转换为正则表达式[01] 使用HashSet去重存储匹配的子串 统计不同匹配的数量 关键点 正则表达式构建 子串匹配 使用Set去重 代码 cpp java python #include <bits/stdc+ 展开全文
头像 小燕子my
发表于 2024-08-28 12:30:29
str1,str2=input(),input() # print(str1,str2) len1,len2=len(str1),len(str2) if len2>len1: print(-1) else: list1=[] for i in range(len1- 展开全文
头像 17c89
发表于 2024-02-29 11:01:55
import java.util.HashSet; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public st 展开全文
头像 人间水长东
发表于 2024-11-18 21:16:05
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { // 输入数据 Sc 展开全文