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
分析:简单题。找出几个字符串最长的公共后缀。如果后缀不存在就输出nai。
#include <iostream> #include <string> #include <vector> using namespace std; void getSuffix(string &suffix, string str){ if(suffix == str){ return; } int i = suffix.size()-1; int j = str.size()-1; for(; i>=0 && j>=0; i--,j--){ if(suffix[i] != str[j]){ i++; j++; break; } } if(i == -1){ i++; } string t(suffix, i); suffix = t; } int main(int argc, char** argv) { int N, i; cin>>N; getchar(); vector<string> vec(N); string str; string suffix; for(i=0; i<N; i++){ getline(cin,str); if(i == 0){ suffix = str; } getSuffix(suffix, str); } if(suffix.empty()){ cout<<"nai"<<endl; }else{ cout<<suffix<<endl; } return 0; }