[传智杯 #3 决赛] 子串

2023-12-06 08:04
文章标签 子串 决赛 传智杯

本文主要是介绍[传智杯 #3 决赛] 子串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目背景

disangan233 喜欢字符串,于是 disangan333 想让你找一些 disangan233 喜欢的串。

题目描述

在传智的开发课堂上,希望您开发一款文档处理软件。

给定 T 组询问,每次给定 22 个长度为 n,m 的只含英文字母的字符串 a,b,求 a 在 b 中的出现次数,相同字符不区分大小写。注意 a 是 b 中连续子序列。

对于所有数据,T≤100,∑n≤∑m≤10的3次方。字符串仅由大小或者小写的英文字母组成。

输入格式

输入共 3T+1 行。

第 1 行输入 1 个正整数 T。

接下来共 T 组输入,每组输入共 3 行。

第 1 行输入 2 个正整数 n,m。

第 2行输入一个长度为 n 的字符串 a。

第 3行输入一个长度为 m 的字符串 b。

输出格式

输出共 T 行,第 i 行输出 1 个整数,表示询问 i 的答案。

输入输出样例

输入 #1复制

5
3 10
abc
abcabcabca
2 10
aa
AAaAaaAaAa
5 5
AbCdE
eDcBa
5 5
abcde
ABCDE
3 10
aba
ABaBaAbaBA

输出 #1复制

3
9
0
1
4

说明/提示

对于第一组输入,出现了 3 次,分别是 [abc]abcabcaabc[abc]abcaabcabc[abc]a

对于第二组输入,出现了 9 次,分别是 [Aa]AaaAaAaA[aA]aaAaAaAa[Aa]aAaAaAaA[aa]AaAaAaAa[aA]aAaAaAaa[Aa]AaAaAaaA[aA]aAaAaaA[aA]aAaAaaAa[Aa]

#include <iostream>
using namespace std;
string b_sm(string s){//把两个字符串的大写统一成小写,方便比较int l=s.size();for(int i=0;i<l;i++){if(s[i]>='A'&&s[i]<='Z')s[i]+=32;}return s;
}
int main(){int n;string ch1,ch2;cin>>n;for(int i=1;i<=n;i++){int a,b,sum=0;cin>>a>>b>>ch1>>ch2;ch1=b_sm(ch1);ch2=b_sm(ch2);for(int i=0;i<ch2.size();i++){if(ch2.substr(i,ch1.size())==ch1)sum++;/*substr函数格式 (俗称:字符截取函数)substr(string, start<,length>):从string的start位置开始提取字符串 格式1: substr(string string, int a, int b);格式2:substr(string string, int a) ;*/}cout<<sum<<endl;}return 0;
}

这篇关于[传智杯 #3 决赛] 子串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/461064

相关文章

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

poj3261(可重复k次的最长子串)

题意:可重复k次的最长子串 解题思路:求所有区间[x,x+k-1]中的最小值的最大值。求sa时间复杂度Nlog(N),求最值时间复杂度N*N,但实际复杂度很低。题目数据也比较水,不然估计过不了。 代码入下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

PHP最长单一子串

<?php//方法一$s='abcccddddddcdefg';$max='';while($s!=''){$i=0; while($i<strlen($s) && $s[$i]==$s[0]) $i++;if ($i>strlen($max)){$max=substr($s,0,$i);} $s=substr($s,$i);}echo $m

【UVA】10066-The Twin Towers(最长公共子串问题)

赤裸裸的最长公共子串问题,没什么好说的,注意的是,每组数据后面都有一个空行。 13996019 10066 The Twin Towers Accepted C++ 0.015 2014-08-06 00:34:53 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using

MySQL中的`SUBSTRING()`和`MID()`函数:精准抽取字符串中的子串

在数据库操作中,经常需要从存储的字符串中提取出特定的部分,比如从用户全名中提取姓氏、从日期字符串中提取年份等。MySQL提供了SUBSTRING()和MID()两个函数,它们的功能几乎完全相同,都是用来从字符串中抽取子串的。本文将详细介绍这两个函数的用法、参数以及在实际场景中的应用。 一、SUBSTRING()和MID()函数的基本语法 1. SUBSTRING()函数 SUBSTRING(

leetcode: 5. 最长回文子串

5. 最长回文子串 题目链接https://leetcode.cn/problems/longest-palindromic-substring/ 题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2:

java常用算法之最长回文子串(Longest Palindromic Substring)

方法一:时间复杂度为O(n^3) public static String longestPalindrome1(String s) {int maxPalinLength = 0;String longestPalindrome = null;int length = s.length();// check all possible sub stringsfor (int i = 0; i

【LeetCode】03.无重复字符的最长子串

题目要求 做题链接3.无重复字符的最长子串 解题思路 我们通过参考给出的输入很容易就会从每一个字符开始,看看最长能延续多长。我们通过画图发现一旦一个字符可以延续到另一个字符,那么我们就不需要考虑他中间仍然存在字符重复的问题。因此而后我们发现可以使用滑动窗口进行优化。 代码实现 class Solution {public:int lengthOfLongestSubstring(s

3、无重复字符的最长子串

题目 链接:leetcode链接 思路分析(滑动窗口) 子串是连续的,很容易联想到滑动窗口,处理连续子串问题很方便。 先设置left和right两个指针,从0位置开始移动。 为了去判断窗口里面有没有出现重复的子串,可以使用一个hash表来存出现的次数, 这里为了防止有些小伙伴不会用hash表,就先用数组模拟一下hash表吧。 当hash表里面没出现right字符时,就插入hash表,r