A - Prefix and Suffix
题意:输入一个整形变量n和两个字符串s,t,使用一些规则求满足条件的最短字符串的长度;规则如下:这个最短字符串的长度不能小于n;它的前n个字符必须与s相同;它的后n个字符必须与t相同
分析:根据题意和样例可知,当s和t相等(长度、字符都相同)时,结果就是n;否则,将t与s逐个字符相比较,如果tj与si相等时,i加1,j加1,num(相等的数量);如果不相等,i加1.
代码如下:
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4
5 using namespace std;
6
7 const int maxn = 105;
8 char s[maxn], t[maxn];
9
10 int main()
11 {
12 int n;
13 int num;
14 while(scanf("%d", &n)==1&&n)
15 {
16 scanf("%s", s);
17 scanf("%s", t);
18 if(strcmp(s,t) == 0)
19 printf("%d
", n);
20 else
21 {
22 int i, j;
23 int len1 = strlen(s);
24 int len2 = strlen(t);
25 num = 0;
26 for(i = 0, j = 0; i < len1&&j < len2; )
27 {
28 if(s[i] == t[j])
29 {
30 num++;
31 i++;
32 j++;
33 }
34 else
35 {
36 i++;
37 }
38 }
39 printf("%d
", 2*n-num);
40 }
41 }
42 return 0;
43 }