3 回答
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
TA贡献1874条经验 获得超12个赞
您在使用substring函数时有错误:
public static boolean isDoubled(String s) {
if (s.length() % 2 == 0)
return false;
if (s.length() == 1)
return true;
int mid = s.length() / 2;
return s.substring(0, mid).equals(s.substring(mid + 1));
}
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
TA贡献2011条经验 获得超2个赞
当您将两个索引(a,b)传递给子字符串方法时,该方法包括索引,但不包括索引b。从数学上讲,它是[a,b)。如果您考虑字符串“ hello!hello”,那么mid将是索引5。当您说-
String[] parts = {s.substring(0, midLen - 1), s.substring(midLen + 1)};
您得到的两个部分是
s.substring(0, 4) //this gets you the string "hell"
s.substring(6) //this gets you the string "hello"
显然,它们不匹配。导致错误的对等。
您需要做一个小改动-
String[] parts = {s.substring(0, midLen), s.substring(midLen + 1)};
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
TA贡献1993条经验 获得超5个赞
两个简单的错误:
在你的
if-statement
你如果长度甚至,当你想,以确保它是不是连。(更改(s.length() %2===0)
为!(s.length() %2 == 0)
而且该
substring
功能不具有包容性,因此您想更改s.substring(0, mid-1)
为s.substring(0, mid)
(从docs中:“子字符串从指定的beginIndex开始,并扩展到索引endIndex-1处的字符。 ”)
同样,您不需要将in的两个部分array
放入变量中。您可以简单地将它们进行比较,例如: parts[0].equals(parts[1])
添加回答
举报