week5-[字符数组]查找
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
(最简单)
#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;
}
方法二:自己写子串查找(纯数组思路)
#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;
}