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
分析:
(1)题意思就是从字符串最后开始比较,找出最长相同尾缀,然后不能以空格开头。
(2)注意边界条件,我的方法是先找出字符串总最短的size
#include <iostream> #include<vector> #include <string> using namespace std; int n; int main (){ cin>>n; getchar(); vector<string> ve(n); int i,minSize=300; for (i=0;i<n;i++){ getline(cin,ve[i]); if (minSize>ve[i].size())minSize=ve[i].size(); } vector <char> ans; int index=1; while (index<=minSize){ int flag=0; for (i=0;i<n-1;i++){ if (ve[i][ve[i].size()-index]==ve[i+1][ve[i+1].size()-index]){ } else { flag=1; break; } } if (flag==0){ ans.push_back(ve[i][ve[i].size()-index]); index++; } else break; } if (ans.size()==0) cout<<"nai"; else { for (i=ans.size()-1;i>=0;i--){ if (i==ans.size()-1&&ans[i]==' ') continue; cout<<ans[i]; } } return 0; }