2017-08-13 115 views
0

示例: 從字符串「8816168168」遞歸刪除「816」。 結果將是「8」;如何從字符串遞歸刪除子串而不使用遞歸?

是否有任何其他方式來實現此功能而不使用遞歸?

遞歸可能會喜歡:

function deleteSubstring($string){ 
    //... 
    return deleteSubstring($subString); 
} 

我不需要這個解決方案。還有其他嗎? 您可以使用任何語言或僞代碼。

+1

* 「遞歸不使用遞歸」 * - ? - 你的意思是使用循環? –

+1

目前還不清楚你的意思是「遞歸地從字符串中刪除子串」,你帶來的「示例」根本無助於闡明這一點,而你展現的代碼沒有任何意義。 –

回答

0

使用while循環JavaScript解決方案:

function deleteSubstring(str1, str2){ 
 

 
    while(str1.indexOf(str2) > -1) 
 
     str1 = str1.replace(str2, ''); 
 
     
 
    return str1; 
 
} 
 

 
console.log(deleteSubstring('8816168168','816'));

0

寫一個for循環。

function deleteSubstring($string){ 
    while($substring.isEmpty()){ 
     ...... ... 
     code for the deleting the substring 
     ......... 

    } 
    return $string 
} 
0

我明白這個難題。我認爲最初一個簡單的.replace與regxexp會解決它......

str.replace(/(816)/g, '') 

...但是,一個返回8168

所以我仍然需要這種循環通過:

function cleanString(str, removeStr) { 
    while (str.indexOf(removeStr) != -1) { 
    str = str.replace(new RegExp(removeStr, 'g'), ''); 
    } 

    return str; 
} 
+0

除了正則表達式,我們可以使用repalceAll函數,例如str.replaceAll('816')。這個函數在java語言中可用 –