PAT甲级 1077 Kuchiguse 找多个字符串的相同后缀

PAT甲级 1077 Kuchiguse 找多个字符串的相同后缀_第1张图片
PAT甲级 1077 Kuchiguse 找多个字符串的相同后缀_第2张图片

Solution:

题目要求:找出n个字符串的相同后缀,若没有,则输出“nai”。
先把所有字符串反转,这样就可以从第一个字符开始判断,否则字符串长度不确定从最后一个不好遍历。
外层循环是当前所判断的字符位置,内层循环是n个字符串。

代码如下:

//找多个字符串的相同后缀

#include
#include
#include
#include
#define INF 0x3f3f3f3f
using namespace std;

int n;
string s[105];

int main(){
    cin>>n;
    getchar();
    int minl=INF;
    for(int i=0;i<n;i++){
        getline(cin,s[i]);
        reverse(s[i].begin(),s[i].end());
        if(s[i].length()<minl){
            minl=s[i].length();
        }
    }
    int pos=0;
    char now_ch=s[0][0];
    bool flag1=true,flag2=false;
    string str="";
    while(pos<minl){
        if(flag1&&flag2){
            str=now_ch+str;
            flag1=true;
            pos++;
            now_ch=s[0][pos];
        }
        if(!flag1){
            break;
        }
        for(int i=0;i<n;i++){
            flag2=true;
            if(s[i][pos]!=now_ch){
                flag1=false;
                break;
            }
        }
    }

    if(str.length()!=0){
        cout<<str;
    }else{
        cout<<"nai";
    }
    return 0;
}

你可能感兴趣的:(PAT,字符串)