PAT 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

题目大意:找出字符串末尾想的的部分;
思路:因为每个字符串的长度不一致,所以在输入的时候, 把每一个字符串颠倒一下
输入的时候,找到最短字符串的长度
遍历每个字符串,查看有多少个连续的相等的字符串;
注意点:在输入整数n后必须用cin.get()把换行符吸收掉;否则会被当做第一个字符串输入
在末尾相等子串的长度的时候, 必须n个字符串都相等, 才能把长度+1
 1 #include<iostream>
 2 #include<string>
 3 #include<algorithm>
 4 using namespace std;
 5 int main(){
 6   int n, i;
 7   cin>>n;
 8   cin.get();
 9   string s[100];
10   int minn=99999999;
11   for(i=0; i<n; i++){
12     getline(cin, s[i]);
13     reverse(s[i].begin(), s[i].end());
14  
15     if(s[i].size()<minn) minn = s[i].size();
16   }
17   int cnt=0, f=1;
18   for(i=0; i<minn&&f; i++){
19     f = 1;
20     for(int j=0; j<n-1; j++){
21         if(s[j][i]!=s[j+1][i]){
22             f=0;
23               break;
24         }
25     }
26     if(f) cnt++;
27   }
28  
29   if(cnt==0) cout<<"nai"<<endl;
30   else{
31     s[0] = s[0].substr(0, cnt);
32     reverse(s[0].begin(), s[0].end());
33     cout<<s[0]<<endl;
34   }
35   return 0;
36 }

猜你喜欢

转载自www.cnblogs.com/mr-stn/p/9230599.html