测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题