2017-04-14 113 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解决方案。你没有理由冷静下来。 –