这道题我觉得最关键的就是能看懂题,好好学英语很重要,大概意思就是让你找到下面这些字符串最大的公共后缀
大概思路就是先把每个字符串读进来然后翻转,最大公共后缀就变成了最大公共前缀这就简单很多了,读进去的时候顺便把最小字符串长度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;
}