尼斯的定义如下
如果一个词包含的字符串与一个适当的前缀和一个适当的后缀是相同的,那么这个词就不错了。一个适当的前缀或后缀不能像单词本身一样长。
例如:
manama很好,因为它包含ma作为一个适当的前缀和一个适当的后缀。
巴拿马不是一个好词。在这种情况下,输出是“不是”
我的解决方案运行良好,但对于某些输入(word)长度较长的测试用例来说,它花费的时间太长。
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;
}
如何进一步改进。
最佳答案
尝试添加以下中断语句:-
if(seq[i] != seq[j]) {
flag = false;
break;
}