亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

拆分和比較一個字符串(Java)

拆分和比較一個字符串(Java)

慕容3067478 2021-05-07 14:23:28
我已經測試了一段時間的不同方法,這就是我得到的。我只是不知道如何解決這個問題。/** Return true iff s has an odd number of characters and *  the substring before the middle character equals the substring *  after it. * Examples: For s = "" return false * For s = "b" return true * For s = "xbx" return true * For s = "xxxx" return false * For s = "hellohello" return false * For s = "hello!hello" return true */public static boolean isDoubled(String s) {    // TODO 1. There is no need for a loop. Do not use a loop.    // In all methods, use s1.equals(s2) and NOT s1 == s2 to test    // equality of s1 and s2.    int midLen = s.length() / 2;    if (midLen == 0) return false;    String[] parts = {s.substring(0, midLen - 1), s.substring(midLen + 1)};    String part1 = parts[0];    String part2 = parts[1];    if ((s.length() % 2 == 0) && (part1.equals(part2))) {        return true;    }    return false;}
查看完整描述

3 回答

?
HUWWW

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));

}


查看完整回答
反對 回復 2021-05-19
?
森林海

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)};


查看完整回答
反對 回復 2021-05-19
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

兩個簡單的錯誤:

  • 在你的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])


查看完整回答
反對 回復 2021-05-19
  • 3 回答
  • 0 關注
  • 270 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號