1 条题解
-
0
自动搬运
来自洛谷,原作者为

Milthm
?搬运于
2025-08-24 22:42:56,当前版本为作者最后更新于2022-11-10 19:23:10,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
P8835 题解
让我们看看这题,然后我们敏锐的察觉到这里有一个“相同字符不区分大小写”,那好我们先转换:
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;//返回处理好的字符串 }接下来是最关键的判断子串了,接下来给大家介绍一个函数:
s.substr(start,num);这个函数的作用是从 开始截取 个字符。用它我们就可以轻松的判断子串啦!
那么附上完整代码:
#include<iostream> using namespace std; int t,n,m,ans; 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; } string s1,s2;//题目中的A和B int main(){ cin>>t; while(t--){ ans=0; cin>>n>>m>>s1>>s2;//输入 s1=b_sm(s1);s2=b_sm(s2); int l2=s2.size(),l1=s1.size(); for(int i=0;i<l2;i++){ if(s2.substr(i,l1)==s1)ans++;//截取,如果是就把答案增加 } cout<<ans<<endl;//输出答案 } return 0; }
- 1
信息
- ID
- 6598
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者