3 回答

TA貢獻1874條經(jīng)驗 獲得超12個贊
您在使用substring函數(shù)時有錯誤:
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));
}

TA貢獻2011條經(jīng)驗 獲得超2個贊
當(dāng)您將兩個索引(a,b)傳遞給子字符串方法時,該方法包括索引,但不包括索引b。從數(shù)學(xué)上講,它是[a,b)。如果您考慮字符串“ hello!hello”,那么mid將是索引5。當(dāng)您說-
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"
顯然,它們不匹配。導(dǎo)致錯誤的對等。
您需要做一個小改動-
String[] parts = {s.substring(0, midLen), s.substring(midLen + 1)};

TA貢獻1993條經(jīng)驗 獲得超6個贊
兩個簡單的錯誤:
在你的
if-statement
你如果長度甚至,當(dāng)你想,以確保它是不是連。(更改(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])
添加回答
舉報