1077 Kuchiguse (20分)
Posted d-i-p
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1077 Kuchiguse (20分)相关的知识,希望对你有一定的参考价值。
1. 题目
2. 思路
- 比较两个字符串获取相同尾部
- 用尾部去和第三个字符串比较
- 如果尾部长度为0退出
3. 注意点
- 读入一行中间有空格,PTA不支持gets函数。解决方法看标题5.tip
- 一般时间少于400ms的题目都会有超时问题,注意方法的时间复杂度
- getline()之气要用getchar()读入一个‘ ‘
- 相同字符串的前面的空白字符应该去除(测试中没有这个)
4. 代码
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<iostream>
// 13:28-14:20
using namespace std;
#define MAXN 101
int n;
string s[MAXN];
string same(string end, string s2){
if(end.length() > s2.length()){
swap(end, s2);
}
for(int i=end.length();i>0;i--){
if(s2.substr(s2.length()-i, i) == end.substr(end.length()-i, i)){
return end.substr(end.length()-i, i);
}
}
return "";
}
int main(){
scanf("%d", &n);
getchar();
string temp;
for(int i=0;i<n;i++){
getline(cin, temp);
s[i] = temp;
}
string end = s[0];
for(int i=1;i<n;i++){
end = same(end, s[i]);
if(end.length() == 0){
printf("nai");
return 0;
}
}
printf("%s", end.data());
}
5. tip
- 程序时间一般为400ms. 如果看到少于400ms, 使用暴力法一般都会超时
- PTA不能使用
itoa()
,gets()
对于gets()函数,我们可以使用getline()函数代替
// 必须头文件
#include<string>
#include<iostream>
// 使用方法
string dst;
getline(cin, dst); //默认'
'终止, 可以用第三个参数指定其他
以上是关于1077 Kuchiguse (20分)的主要内容,如果未能解决你的问题,请参考以下文章
1077 Kuchiguse (20 分)求字符串最长相同后缀
[PAT] 1077 Kuchiguse (20 分)Java
1077 Kuchiguse (20 分)难度: 一般 / 字符串模拟
PAT甲级1077 Kuchiguse (20 分)(cin.ignore()吃掉输入n以后的回车接着用getine(cin,s[i])输入N行字符串)