以下是来自Codeforces的问题:
Polycarp 经常思考生命的意义。他经常这样做,甚至在编辑器中键入时也是如此。每当他开始沉思时,他就无法完全集中精力,并重复按下只需要按一次的键。例如,他可能会输入"hhoow aaaare yyoouu",而不是"how are you"。
Polycarp 决定自动化这个纠正错误的过程。他决定编写一个插件到文本编辑器中,以删除一对连续相同的字母(如果有的话)。当然,这并不完全符合 Polycarp 的需求,但他必须从某些东西开始!
请帮助 Polycarp 编写主要的插件模块。您的程序应该从字符串中删除所有连续的相同字母对。如果删除后出现新的相同字母对,则程序应该继续删除它们。从技术上讲,它的工作应等同于以下内容:只要字符串包含一对连续相同的字母,该对就��该被删除。请注意,删除连续相同字母可以按任何顺序进行,因为任何顺序都会得到相同的结果。
以下是我的解决方案。由于某种原因,它未通过非常大的测试案例。我的解决方案似乎去除了比它应该去除的更多字母。这个正则表达式是否不正确?
str = gets.chomp
while str =~ /(.)\1/
str.gsub!(/(.)\1+/,'')
end
puts str
编辑 -- 此解决方案不起作用,因为它会消除所有连续的字符组。 它应该只消除重复的部分。 如果我按照我认为是正确的方式处理,对于非常大的字符串,它会超时:
str = gets.chomp
while str =~ /(.)\1/
str.gsub!(/(.)\1/,'')
end
puts str
'aaab'
应该怎么处理呢?它应该变成'ab'
还是'b'
? - mu is too short/([a-z])\1/i
。 - squiguy