一、题目
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
二、题目大意
从后往前,最长公共子序列。
三、考点
string
四、注意
1、cin和getline结合的时候要getchar();
2、string倒序处理会方便很多。
五、代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
//read
int n;
cin >> n;
getchar();
vector<string> vec(n);
int min_len = 99999999;
for (int i = 0; i < n; ++i) {
getline(cin, vec[i]);
reverse(vec[i].begin(), vec[i].end());
min_len = min(min_len, (int)vec[i].length());
}
//solve
bool flag = true;
string sout = "";
for (int i = 0; i < min_len; ++i) {
for (int j = 0; j < n; ++j) {
if (vec[j][i] != vec[0][i]) {
flag = false;
break;
}
}
if (flag == true) {
sout += vec[0][i];
}
else
break;
}
//output
if (sout == "")
cout << "nai";
else {
reverse(sout.begin(), sout.end());
cout << sout;
}
system("pause");
return 0;
}