1. 题目
2. 思路
- 比较两个字符串获取相同尾部
- 用尾部去和第三个字符串比较
- 如果尾部长度为0退出
3. 注意点
- 读入一行中间有空格,PTA不支持gets函数。解决方法看标题5.tip
- 一般时间少于400ms的题目都会有超时问题,注意方法的时间复杂度
- getline()之气要用getchar()读入一个‘\n‘
- 相同字符串的前面的空白字符应该去除(测试中没有这个)
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); //默认'\n'终止, 可以用第三个参数指定其他
原文地址:https://www.cnblogs.com/d-i-p/p/12426416.html
时间: 2024-10-29 04:16:53