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

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

codingBat 問題:如果對于字符串中的每個 '*'(星號),則返回 true

codingBat 問題:如果對于字符串中的每個 '*'(星號),則返回 true

繁星coding 2022-07-27 11:35:53
我正在處理這個codingbat問題:如果對于字符串中的每個'*'(星號),如果在星號之前和之后都有字符,則返回true,它們是相同的。例子:sameStarChar("xy*yzz") → truesameStarChar("xy*zzz") → falsesameStarChar("*xa*az") → true我的第一次代碼嘗試是:public boolean sameStarChar(String str) {  //boolean flag = false;  for(int i =1;i< str.length()-1; i++){    if(str.charAt(i) == '*' && str.charAt(i-1) == str.charAt(i+1)){      return true;    }  }  return false;}并且沒有通過幾個案例:sameStarChar("12*2*3*") → false ,sameStarChar("XY YYYY Z*") → false。但是,如果將代碼更改為:public boolean sameStarChar(String str) {  //boolean flag = false;  for(int i =1;i< str.length()-1; i++){    if(str.charAt(i) == '*' && str.charAt(i-1) != str.charAt(i+1)){      return false;    }  }  return true;}結果得到糾正。我不明白我的第一次嘗試有什么問題。
查看完整描述

3 回答

?
慕俠2389804

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

在您的第二次嘗試中,您解決了代碼中唯一的問題。

如果有匹配的字符包圍,您的第一次嘗試將通過返回立即終止true*。(在這里你會錯過即將到來*的字符不匹配的 s)

您的第二種情況現在將檢查您的字符串是否包含一個*被不匹配的字符包圍的字符串,并通過返回 false 來終止它。

注意:這是一個示例,您可以調整檢查以檢測負面情況,而不是遍歷所有情況并找到正面情況。

在您的情況下,您可以做兩件事(注意:我們可以安全地移除角落兩個,而您已經這樣做了),

如果返回true:字符串中的每個*都被匹配的字符包圍

或者

如果返回false:至少有一個*被不匹配的字符包圍。


查看完整回答
反對 回復 2022-07-27
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

在您的第一種情況下,一旦找到一個錯誤的有效匹配/出現,您就會返回。此外,您不會檢查*一端或兩端的情況。

在第二種情況下,您正在顯式搜索不匹配。此外,*末端的極端情況自然會成為匹配/成功。


查看完整回答
反對 回復 2022-07-27
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

您的第一次嘗試有兩個問題:

  • 它沒有考慮完全不包含任何星號的字符串的情況,循環將運行到完成,然后false將錯誤地返回。

  • 它錯誤地返回true星號的第一對匹配的鄰居,而不管后面可能有任何不匹配的對。


查看完整回答
反對 回復 2022-07-27
  • 3 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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