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

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

如果 x 和 o 的數量相同,如何改進返回布爾值的函數

如果 x 和 o 的數量相同,如何改進返回布爾值的函數

小怪獸愛吃肉 2023-04-19 10:32:58
我正在嘗試做這個問題“檢查一個字符串是否具有相同數量的'x'和'o'。該方法必須返回一個布爾值并且不區分大小寫。該字符串可以包含任何字符。”但是我沒有通過一些測試,所以我想知道是否有更好的方法來做到這一點?public class XO {  public static boolean getXO (String str) {  boolean Boolean = false;    String[] x = str.split("x");    String[] o = str.split("o");    // Good Luck!!    if(x.length == o.length){    Boolean = true;    }    return Boolean;  }}
查看完整描述

4 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

您不需要進行任何拆分。除了它不正確(oooxxx例如 try 或OOOxxx)這一事實之外,它相當低效,因為它需要創建新對象。你不需要這樣做。


一次只迭代一個字符,檢查當前字符是什么,然后遞增/遞減計數器:


int count = 0;

for (int i = 0; i < str.length(); ++i) {

  switch (str.charAt(i)) {

    case 'o': case 'O':

      count++;

      break;

    case 'x': case 'X':

      count--;

      break;

  }

}

return count == 0;

更喜歡使用索引循環而charAt不是迭代toCharArray(),因為后者會創建一個包含整個字符串的新 char 數組。


查看完整回答
反對 回復 2023-04-19
?
米脂

TA貢獻1836條經驗 獲得超3個贊

您的方法似乎不區分大小寫;我將遍歷輸入中的所有字母String(首先將其轉換為小寫字母)并計算x和o字符。就像是,


int x = 0, o = 0;

for (char ch : str.toLowerCase().toCharArray()) {

    if (ch == 'x') {

        x++;

    } else if (ch == 'o') {

        o++;

    }

}

return o == x;


查看完整回答
反對 回復 2023-04-19
?
墨色風雨

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

實際上有許多不同的方法可以實現這一點:

  • 統計字符串中某個字符出現的次數

    • 命令式方法

    • 使用遞歸

    • 使用正則表達式

    • 使用 Java 8 特性

    • 使用第三方庫(特別是 Apache Commons 或 Spring Framework)

這個例子是我可能會嘗試的(至少作為“優化”之前的第一次削減):

public static boolean isSameXOCount (String str) {

? int ctX = 0, ctO = 0;

? for (int i=0; i < str.length; i++) {

? ? char c = str.charAt(i);

? ? if (c == 'X' || c == 'x')

? ? ? ctX++;

? ? else if (c == 'O' || c == 'o')

? ? ? ctO++;

? }

? return ctX == ct);

}


查看完整回答
反對 回復 2023-04-19
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

你可以做類似的事情

return StringUtils.countMatches(str, "x") == StringUtils.countMatches(str, "o").

為什么要兩次發明輪子?讓我知道這是否對您有幫助。我沒有嘗試代碼,但它應該可以工作。


查看完整回答
反對 回復 2023-04-19
  • 4 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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