第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何修復CodingBat中的遞歸代碼錯誤?

如何修復CodingBat中的遞歸代碼錯誤?

守候你守候我 2023-08-04 16:40:40
所以,我正在 CodingBat 上解決這個問題給定一個字符串,遞歸(無循環(huán))計算一個新字符串,其中所有出現(xiàn)的“pi”都已替換為“3.14”。更改Pi(“xpix”)→“x3.14x”更改Pi(“pipi”)→“3.143.14”ChangePi("pip") → "3.14p"這是我的代碼:public String changePi(String str) {    if (str.length() < 2)        return str;    char c1 = str.charAt(0);    char c2 = str.charAt(1);    if (c1 == 'p' && c2 == 'i')        return "3.14" + changePi(str.substring(2));    return c1 + c2 + changePi(str.substring(2));}此代碼不適用于許多測試用例,如下圖所示我無法理解我的遞歸代碼出了什么問題以及為什么它顯示這樣的輸出。誰能幫助我理解我做錯了什么?
查看完整描述

3 回答

?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

您的解決方案需要一個小調(diào)整 - 當您找到 ap和i在一起時,您正確地向前跳過 2 個字符以查看字符串的其余部分 - 您正在使用return "3.14" + changePi(str.substring(2));.


但是,當您沒有找到和p在一起i時,您需要更改邏輯以僅向前跳過一個字符而不是兩個字符。所以代替這個:


return c1 + c2+ changePi(str.substring(2));

做這個:


return c1 + changePi(str.substring(1));

進行更改后,我得到以下輸出(使用您的每個輸入),該輸出與您的預期輸出相匹配:


x3.14x

3.143.14

3.14p

3.14

hip

p

x


3.14xx

xyzzy



查看完整回答
反對 回復 2023-08-04
?
滄海一幻覺

TA貢獻1824條經(jīng)驗 獲得超5個贊

這里有幾個解決該問題的方法。第二種和你的方法類似。在第一個中,我最初包含了目標替換文本,因此我需要確定其長度。因此,"pi".length()我決定將其保留下來。



       public static void main(String[] args) {

          String[] tests = {

                "piabcpiefgpi", "xxxxxxpix", "xpix", "pip", "3.14", "3.14p",

                "hip", "p", "x", "", "pixx", "xyzzy"

          };

          for (String t : tests) {

             System.out.println(t + " --> " + replaceV2(t));

          }

       }


       public static String replaceV1(String a) {

          int i = a.indexOf("pi");

          if (i < 0) {

             return a;

          }

          return replaceV1(

                a.substring(0, i) + "3.14" + a.substring(i + "pi".length()));

       }


       public static String replaceV2(String a) {

          if (a.length() < 2) {

             return a;

          }


          if (a.startsWith("pi")) {

             a = "3.14" + replaceV2(a.substring(2));

          }

          return a.substring(0, 1) + replaceV2(a.substring(1));

       }

    }

他們都打印以下內(nèi)容。


piabcpiefgpi --> 3.14abc3.14efg3.14

xxxxxxpix --> xxxxxx3.14x

xpix --> x3.14x

pip --> 3.14p

3.14 --> 3.14

3.14p --> 3.14p

hip --> hip

p --> p

x --> x

 --> 

pixx --> 3.14xx

xyzzy --> xyzzy


查看完整回答
反對 回復 2023-08-04
?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

'''  change pi to 3.14 python code'''


def changePi(s):

    if len(s) == 2 and s == 'pi' :  return '3.14'

    if len(s) <= 2 :  return s 

    chars , sub = s[0:2] , s[1:]

    if chars == 'pi':

       chars = '3.14'

       sub = sub[1:]

    else:  chars =  chars[0]

    return chars + changePi(sub) 


print changePi("xpix") 

print changePi("pipi") 

print changePi("pip")


查看完整回答
反對 回復 2023-08-04
  • 3 回答
  • 0 關(guān)注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號