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
写了2中代码,基本上一模一样,就是有一个超时,估计scanner这个有问题,最后用的
BufferedReader
AC代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] strings = new String[n+100];
int minLen = 600;
for (int i=0; i<n; ++i) {
strings[i] = br.readLine();
if (minLen>strings[i].length()) {
minLen = strings[i].length();
}
strings[i] = new StringBuilder(strings[i]).reverse().toString();
}
String resultString = "";
boolean tag = true;
for (int i=0; i<minLen; ++i) {
char ch = strings[0].charAt(i);
for (int j=1; j<n; ++j) {
if (strings[j].charAt(i)!=ch) {
tag = false;
break;
}
}
if (tag) {
resultString = ch + resultString;
} else {
break;
}
}
if (resultString.length()==0) {
System.out.println("nai");
} else {
System.out.println(resultString);
}
}
}
有一个测试超时的代码
import java.util.Scanner;
public class Main{
/**
* 不知道为什么有一组测试一直超时
* */
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n, minLen = 300;
n = scanner.nextInt();
scanner.nextLine();
String[] strings = new String[n+10];
for (int i=0; i<n; ++i) {
strings[i] = scanner.nextLine();
int eachLen = strings[i].length();
if (eachLen<minLen) {
minLen = eachLen;
}
}
for(int i=0; i<n; ++i) {
strings[i] = new StringBuilder(strings[i]).reverse().toString();
}
String resultString = "";
boolean tag = true;
for (int i=0; i<minLen; ++i) {
char ch = strings[0].charAt(i);
for (int j=1; j<n; ++j) {
if (strings[j].charAt(i)!=ch) {
tag = false;
break;
}
}
if (tag) {
resultString = ch + resultString;
} else {
break;
}
}
if (resultString.length()==0) {
System.out.println("nai");
} else {
System.out.println(resultString);
}
}
}