任何人都可以帮助我为什么这段代码总是评估为真?
public boolean prefixAgain(String str, int n) {
String prefix = str.substring(0,n-1);
int index = str.indexOf(prefix,n-1);
if (index != -1)
{return true;}
else
{return false;}
}
答案 0 :(得分:0)
我认为这对你更有效:
int index = str.indexOf(prefix,0);
您试图在您查找的位置(n-1)的末尾找到前缀的索引。你想要达到什么目的?
答案 1 :(得分:0)
package com;
public class Mycode {
public static void main(String[] args) {
System.out.println(prefixAgain("nishikantnishikant", 11));//false - if you have repeated string it will return false till index is greater than length of the string
System.out.println(prefixAgain("nishikant", 3));//false -if there is no repeat, you can get false
System.out.println(prefixAgain("nishikant", 2));//true
System.out.println(prefixAgain("nishikantnishikant", 10));//true - if you have repeated string it will return true till index is equal to length of the string
}
public static boolean prefixAgain(String str, int n) {
String prefix = str.substring(0,n-1);
int index = str.indexOf(prefix,n-1);
if (index != -1)
{return true;}
else
{return false;}
}
}
答案 2 :(得分:0)
我终于意识到我必须在代码中使用n-n n-1。 这是因为substring方法对start和end索引有两种不同的约定。
str.substring(0,n)
包括起始索引(0)但不包括结束索引(n)。这直观有意义,因为子串的长度与n匹配。