当前位置: 代码迷 >> 综合 >> PATA 1077 Kuchiguse
  详细解决方案

PATA 1077 Kuchiguse

热度:32   发布时间:2024-02-06 18:36:02.0

在这里插入图片描述
在这里插入图片描述
这道题我觉得最关键的就是能看懂题,好好学英语很重要,大概意思就是让你找到下面这些字符串最大的公共后缀


大概思路就是先把每个字符串读进来然后翻转,最大公共后缀就变成了最大公共前缀这就简单很多了,读进去的时候顺便把最小字符串长度min找到,最大的公共后缀的长度最大就是min,然后从下标为0开始判断当前字符是否都相等,相等就加到ans里,不相等就出来,最后把ans翻转过来,如果ans的字符数量为0就输出"nai"否则直接把ans打出来


代码如下

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int main()
{string str[105];int N,min=0x3f3f3f3f;//找到下列字符串最短的那个的长度string ans;cin>>N;cin.get();for(int i=0;i<N;i++){getline(cin,str[i]);if(str[i].size()<min)min=str[i].size();reverse(str[i].begin(),str[i].end());//把字符串翻转过来更容易输出来最长后缀}int flag=true;//判断是否出现不相等的了for(int i=0;i<min;i++){//从下标i开始遍历每个字符串char ch=str[0][i];for(int j=1;j<N;j++){if(str[j][i]!=ch){flag=false;break;}}if(!flag)break;else{ans.push_back(ch);}}if(ans.size()==0)cout<<ans<<"nai"<<endl;else{reverse(ans.begin(),ans.end());cout<<ans<<endl;}return 0;
}