(洛谷)P8835 [传智杯 #3 决赛] 子串
[传智杯 #3 决赛] 子串
题目背景
disangan233 喜欢字符串,于是 disangan333 想让你找一些 disangan233 喜欢的串。
题目描述
在传智的开发课堂上,希望您开发一款文档处理软件。
给定 T T T 组询问,每次给定 2 2 2 个长度为 n , m n,m n,m 的只含英文字母的字符串 a , b a,b a,b,求 a a a 在 b b b 中的出现次数,相同字符不区分大小写。注意 a a a 是 b b b 中连续子序列。
对于所有数据, T ≤ 100 T\leq 100 T≤100, ∑ n ≤ ∑ m ≤ 1 0 3 \sum n\leq \sum m\leq 10^3 ∑n≤∑m≤103。字符串仅由大小或者小写的英文字母组成。
输入格式
输入共 3 T + 1 3T+1 3T+1 行。
第 1 1 1 行输入 1 1 1 个正整数 T T T。
接下来共 T T T 组输入,每组输入共 3 3 3 行。
第 1 1 1 行输入 2 2 2 个正整数 n , m n,m n,m。
第 2 2 2 行输入一个长度为 n n n 的字符串 a a a。
第 3 3 3 行输入一个长度为 m m m 的字符串 b b b。
输出格式
输出共 T T T 行,第 i i i 行输出 1 1 1 个整数,表示询问 i i i 的答案。
样例 #1
样例输入 #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 
        
       
      
        3 
       
      
    3 次,分别是 [abc]abcabca,abc[abc]abca,abcabc[abc]a;
对于第二组输入,出现了  
     
      
       
       
         9 
        
       
      
        9 
       
      
    9 次,分别是 [Aa]AaaAaAa,A[aA]aaAaAa,Aa[Aa]aAaAa,AaA[aa]AaAa,AaAa[aA]aAa,AaAaa[Aa]Aa,AaAaaA[aA]a,AaAaaA[aA]a,AaAaaAa[Aa]。
//  P8835 [传智杯 #3 决赛] 子串
#include <iostream>
#include <string>
using namespace std;
string a_A(string s) //小写转换
{
	for(int i=0;i<s.size();i++)
		if(s[i]>='A' && s[i]<='Z') s[i]+=32;
	return s;
}
string t1,t2;
int n,x,y,cnt;
int main()
{
	cin>>n;
	while(n--)
	{
		cnt = 0;  //因为多组数据测试  所以每组测试完要归0  
		cin>>x>>y>>t1>>t2;
		
		t1 = a_A(t1),t2 = a_A(t2);
		
		int len1 = t1.size(),len2 = t2.size();
		
		for(int i=0;i<len2;i++)
		{
			if(t2.substr(i,len1)==t1) cnt++;  // 字符串 截取函数  substr()    6666
		}	
		    cout<<cnt<<endl;
	}
	return 0;
}
/*
疑惑。。。。。   OK 解决
#include <iostream>
#include <string>
using namespace std;
int main()
{
string x = "ab12";
cout<<x.substr(2,2);
return 0;
}
*/
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!