1077 Kuchiguse (20 分)(字符串处理)

The Japanese language is notorious for its sentence ending particles. Personal preference of such particles can be considered as a reflection of the speaker’s personality. Such a preference is called “Kuchiguse” and is often exaggerated artistically in Anime and Manga. For example, the artificial sentence ending particle “nyan~” is often used as a stereotype for characters with a cat-like personality:

Itai nyan~ (It hurts, nyan~)
Ninjin wa iyada nyan~ (I hate carrots, nyan~)
Now given a few lines spoken by the same character, can you find her Kuchiguse?

Input Specification:

Each input file contains one test case. For each case, the first line is an integer N (2<=N<=100). Following are N file lines of 0~256 (inclusive) characters in length, each representing a character’s spoken line. The spoken lines are case sensitive.

Output Specification:

For each test case, print in one line the kuchiguse of the character, i.e., the longest common suffix of all N lines. If there is no such suffix, write “nai”.

Sample Input 1:

3
Itai nyan~
Ninjin wa iyadanyan~
uhhh nyan~

Sample Output 1:

nyan~

Sample Input 2:

3
Itai!
Ninjinnwaiyada T_T
T_T

Sample Output 2:

nai

生词

英文 解释
notorious 臭名昭著的
sentence ending particles 句尾助词
exaggerated 夸大的
artistically 艺术地
Anime 日本动画片
Manga 日本漫画
artificial 人工的
stereotype 刻板印象
characters 角色
The spoken lines are case sensitive. 口语是区分大小写的。
suffix 后缀

题目大意:

给定N给字符串,求他们的公共后缀,如果不存在公共后缀,就输出“nai”

分析:

因为是后缀,反过来比较太麻烦,所以每输入一个字符串,就把它逆序过来再比较,就会比较容易啦~
首先ans = s;后来每输入的一个字符串,都和ans比较,如果后面不相同的就把它截取掉~最后输出ans即可(要逆序输出~所以先将ans倒置reverse一下~)

原文链接:https://blog.csdn.net/liuchuo/article/details/52122061

题解

#include <bits/stdc++.h>

using namespace std;

int main()
{
#ifdef ONLINE_JUDGE
#else
    freopen("1.txt", "r", stdin);
#endif
    int n;
    cin>>n;
    getchar();
    string s,ans;
    for(int i=0;i<n;i++){
        getline(cin,s);
        reverse(s.begin(),s.end());
        if(i==0){
            ans=s;
        }else{
            int minlen=min(ans.length(),s.length());
            for(int j=0;j<minlen;j++){
                if(ans[j]!=s[j]){
                    ans=ans.substr(0,j);
                    break;
                }
            }
        }
    }
    reverse(ans.begin(),ans.end());
    if(ans.size()!=0)
        cout<<ans<<endl;
    else
        cout<<"nai"<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/moonlight1999/p/15602081.html