2017-04-14 34 views
-2

我正在尋找類似於「tip」和「top」的字符串 - 長度爲3的模式,以't'開頭並以'p'結尾。目標是返回一個字符串,對於所有這些單詞,中間的字母已經消失。例如,「tipXtap」產生「tpXtp」。如何搜索子串

到目前爲止,我已經考慮過使用遞歸和replace()方法,但我不確定這是否是解決此問題的最佳方法。

這裏是我的代碼至今:

String result = ""; 
if(str.length() < 3) 
    return str; 

for(int i = 0; i <= str.length() - 2; i++){ 
    if(str.charAt(i) == 't' && str.charAt(i + 2) == 'p'){ 
     str.replaceAll(str.substring(i + 1, i + 2), ""); 
    } 
    return str; 
} 

return str; 
+2

正則表達式將幫助你;) – Tushar

+0

是的,我試圖使用正則表達式與replace()或replaceAll()方法。無法弄清楚。 – allmvp96

+0

你想要哪種編程語言解決方案? –

回答

1

這樣做的一種方法。

  1. 將字符串轉換爲字符數組。

  2. 如果條件是驗證第一個字母的第一個和第三個字母,請使用。首先查看一個字符串的字符是否是T,然後檢查字符兩個字符是否是'p'。你必須在遍歷char數組的循環內完成此操作。

  3. 如果驗證條件爲真,則刪除中間元素。你將不得不移動char數組中的元素。

  4. 將char數組轉換爲String並返回它。

希望這會有所幫助。

+0

是的,那def可以工作。但我認爲有一個更簡單的方法來解決這個問題。 – allmvp96

+0

感謝您的幫助 – allmvp96

+0

是的,我也這麼認爲。剛剛給出了一個想法:) –

-1

這裏是一個JavaScript的解決方案,以使用正則表達式這個問題:

foo = 'tipXtop' 
foo.replace(/t\wp/g, 'tp') 

\w正則表達式運算符像A-Z,A-Z,0-9或_單詞字符匹配。

g正則表達式標誌將匹配字符串中正則表達式的所有實例。

+1

問題是針對Java(請參閱標籤)。 – Andreas

+0

我知道,但這是一個正確的JavaScript解決方案。你沒有理由冷靜下來。 –