A21232. 密文匹配
填空题
中等
知识点
题目描述
密文匹配
题目描述
你有两段密文 s和 t,长度分别为 n 和 m,且 n≤m。
请判断 s在 t 中的位置关系,并输出对应编号:
若 s同时出现在 t 的开头和结尾,输出 0
若 s仅出现在开头,输出 1
若 s仅出现在结尾,输出 2
若 s既不在开头也不在结尾,输出 3
其中,“出现在开头”指 t 的前 n 个字符与 s完全相同;“出现在结尾”指 t 的后 n 个字符与 s完全相同。
输入格式
第一行:两个整数表示 n m
第二行:字符串s
第三行:字符串t
输出格式
输出一个数字表示结果
输入样例#1
3 6
abc
abcdef输出样例#1
1输入样例#2
3 4
abc
cabc输出样例#2
2输入样例#3
3 3
ccc
ccc输出样例#3
0输入样例#4
3 3
abc
xyz输出样例#4
3说明提示
1≤n≤m≤1001≤n≤m≤100
字符串均为小写字母
参考答案
#include <iostream>
#include <string>
using namespace std;
int main() {
int n, m;
string s, t;
cin >> n >> m >> s >> t;
int is_prefix = true;
for (int i = 0; i < n; i++) {
if (s[i] != t[i]) {
is_prefix = false;
}
}
int is_suffix = true;
for (int i = 0; i < n; i++) {
if (s[i] != t[m - n + i]) {
is_suffix = false;
}
}
if (is_prefix) {
cout << (is_suffix ? 0 : 1) << endl;
} else {
cout << (is_suffix ? 2 : 3) << endl;
}
return 0;
}
上一题
下一题