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 }
原文地址:https://www.cnblogs.com/mr-stn/p/9230599.html