week5-[字符数组]查找
题目描述
给定两个只包含小写字母的字符串 a,ba,ba,b,请问 bbb 是否在 aaa 中出现过?
输入格式
输入共 222 行。
第 111 行 111 个只包含小写字母的字符串 aaa。
第 222 行 111 个只包含小写字母的字符串 bbb。
输出格式
输出共 111 行表示答案。如果出现过,输出 YES,否则输出
NO`。
样例 #1
样例输入 #1
helloworld
owo
样例输出 #1
YES
样例 #2
样例输入 #2
abcdcaa
da
样例输出 #2
NO
提示
数据范围
对于所有数据,a,ba,ba,b 的长度都不超过 100010001000。
方法一:用 string.find
(最简单)
c++
#include <bits/stdc++.h>
using namespace std;
int main() {
string a, b;
cin >> a >> b;
if (a.find(b) != string::npos) cout << "YES\n";
else cout << "NO\n";
return 0;
}
方法二:自己写子串查找(纯数组思路)
c++
#include <bits/stdc++.h>
using namespace std;
int main() {
char a[1010], b[1010];
cin >> a >> b;
int n = strlen(a), m = strlen(b);
bool ok = false;
for (int i = 0; i + m <= n; i++) {
bool match = true;
for (int j = 0; j < m; j++) {
if (a[i + j] != b[j]) {
match = false;
break;
}
}
if (match) {
ok = true;
break;
}
}
cout << (ok ? "YES" : "NO") << "\n";
return 0;
}