给出一个字符串,考虑由字符串的前N个字符组成的前缀字符串。该前缀字符串是否出现在字符串的其他位置?假定该字符串不为空,并且N在1..str.length()范围内。
public boolean prefixAgain(String str, int n) {
String res = "";
String res1 = "";
String s = str.substring(0,n);
for ( int i = 0 ; i < n ; i++ ) {
res += str.charAt(i) ;
if (s.equalsIgnoreCase(res)); {
return true;
} else {
return false;
}
}
}
答案 0 :(得分:0)
您的解决方案有很多问题:
n
方法中只需要循环到prefixAgain
?您可能需要走到str.length()
res
变量将再次是字符串的前缀,并且没有用。;
之后有if
? +=
可能会非常昂贵。您应该始终考虑使用StringBuilder
,它是append
的方法。以下方法可以满足您的需求:
public boolean prefixAgain(String str, int n) {
if (str.length() == 1) return false;
String s = str.substring(0, n);
return str.substring(1).contains(s);
}
主要思想是仅从第二个字符(索引为1
的字符)开始在子字符串中搜索所需的前缀。
保持简单。 :)