2 条题解
-
0
感谢楼上题解,不过我认为可以不用转为int再放到数组里面,可以直接减去字符a后变为0-25然后再计算频率会更清楚一点,然后就是这个编辑器是markdown格式的,可以加代码块,不加代码块直接发出来会看的很头疼。总结:感谢楼上题解[花]
#include<bits/stdc++.h> using namespace std; int main() { int T; cin>>T; int Q; string s; for(int i=1; i<=T; i++) { cin>>s; // s是要匹配的字符串 cin>>Q; string zi; int len2 = s.size(); for(int j=1; j<=Q; j++) { cin>>zi; int len = zi.size(); int std[27]={0}; for(int k=0; k<len; k++) { std[zi[k] - 'a']++; } int ans=0; for(int k=0; k<len2 - len + 1; k++) { int jd[27]={0}; string judge=s.substr(k,len); for(int h=0; h<len; h++) { jd[judge[h] - 'a']++; } int flag = 1; for (int h = 0; h <= 26; h ++) { if (jd[h] != std[h]) { flag = 0; } } if (flag == 1) ans++; } cout<<ans<<endl; } } return 0; }
-
0
#include<bits/stdc++.h> using namespace std;
int main() { int T;
cin>>T; int Q; string s; for(int i=1; i<=T; i++) { cin>>s; cin>>Q; string zi; for(int j=1; j<=Q; j++) { cin>>zi; int std[1024]={0}; //子串的标准 for(int k=0; k<zi.size(); k++) { std[(int)zi[k]]++; } int ans=0; //一个Q对应一个ans for(int k=0; k<s.size()-zi.size()+1; k++) { int jd[1024]={0}; string judge=s.substr(k,zi.size());
// cout<<"查找的子串是:"<<judge<<endl; // cout<<"子串的长度是:"<<zi.size()<<endl;
for(int h=0; h<zi.size(); h++) { jd[(int)judge[h]]++; } int flag=1; for(int h=0; h<zi.size(); h++) {
// cout<<zi[h]<<':'<<"std:"<<std[(int)zi[h]]<<" VS "<<"jd:"<<jd[(int)zi[h]]<<endl;
if(std[(int)zi[h]]!=jd[(int)zi[h]]) flag=0;
// cout<<"flag:"<<flag<<endl; }
if(flag==1) ans++; } cout<<ans<<endl; } } return 0;
}
感觉我写的太丑陋了 抛砖引玉一下吧
- 1
信息
- ID
- 196
- 时间
- 4000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 593
- 已通过
- 72
- 上传者