Определение Ниццы, как показано ниже
Слово хорошо, если оно содержит ту же строку, что и правильный префикс, а также надлежащий суффикс. Правильный префикс или суффикс не может быть длинным, как само слово.
Например:-
Манама хороша, потому что она содержит ма в качестве правильного префикса, а также правильного суффикса. Так что вывод будет «СЛАВНЫЙ»
Панама не хорошее слово. Выход в этом случае будет "НЕ"
Мое решение работает нормально, но оно занимает слишком много времени для некоторых тестовых случаев, когда длина ввода (слова) велика.
public static String findNice(String word) {
if((word == null) || (word.length()==1))
return "NOT";
char[] charArr = word.toCharArray();
//System.out.println(charArr.length);
boolean flag = false;
for(int i = (charArr.length)/2; i < charArr.length ;++i) {
if(charArr[0] == charArr[i]) {
flag = compareSubString(charArr,0,i);
}
}
if(flag)
return "NICE";
return "NOT";
}
public static boolean compareSubString(char[] seq, int ptr1, int ptr2) {
boolean flag = true;
for(int i = ptr1,j = ptr2 ; j < seq.length ;++i,++j) {
if(seq[i] != seq[j]) {
flag = false;
}
}
return flag;
}
Как еще улучшить.