pat1077
题目大意
寻找最大公告后缀
- 寻找后缀可以变成寻找前缀
- 第一个是默认为最长的字符串
- 接下来就是当前字符串与公告字符串进行比较
- 找到最小的长度,并且进行对当前字符串的截取
- 之后就是比较
相关知识点
getline获取空格的字符串
reverse来进行反转
代码复现
#include<iostream>
#include<algorithm>
#include <unordered_set>
#include <unordered_map>
#include "map"
#include<vector>
#include "queue"
using namespace std;
//定义最长区间
const int N=10010;
//
int main(){
//后缀反转就是求前缀
//设置一个空的来比较
//注意i=0特殊处理
string common;
int n;
// cin>>n;
scanf("%d\n",&n);
for (int i = 0; i < n; ++i) {
string s1;
getline(cin,s1);
reverse(s1.begin(),s1.end());
if (i==0){
common=s1;
} else{
int len =min(common.size(),s1.size());
common =common.substr(0,len);
for (int j = 0; j < len; ++j) {
if (common[j]!=s1[j]){
common=common.substr(0,j);
break;
}
}
}
}
reverse(common.begin(),common.end());
if (common.empty()){
cout<<"nai";
} else{
cout<<common;
}
}