【发布时间】:2015-04-22 08:48:09
【问题描述】:
我要解决的问题是用另一个字符串替换所有字符串。
我通过使用 String.replaceAll 在codingbat.com 上相当容易地解决了这个问题,直到第一个字符串不再包含另一个字符串。
但是,我不喜欢这种方法,因为它非常慢。我曾尝试在此网站上搜索更有效的方法,但遇到了以下问题:
Fastest way to perform a lot of strings replace in Java
String.replaceAll is considerably slower than doing the job yourself
他们通过使用 StringUtils 和 Patterns 解决了这个问题。我还是觉得这些方法太慢了!
当我编写此类问题的代码时,我喜欢使用 Java 将运行时间控制在 2 秒以内。我正在使用 1,000,000 个字符的字符串对此进行测试。 String.replaceAll 超过了两秒,其他两个方法也是如此。
有没有人能快速解决这个问题?谢谢!
编辑:不幸的是,我收到的答案仍然运行得太慢。是的,我的意思是创建一个新字符串,而不是更改旧字符串,对那个错误感到抱歉。
我不确定它是如何工作的,但我认为循环遍历每个字符并检查可能会起作用。有算法的东西。
【问题讨论】:
-
超过两分钟是指读取 100k 字符并处理它们的时间吗?
-
@MissingNumber:100 万。
-
@MissingNumber 不到两秒,这将是运行整个程序的时间。不过,我有一个输入输出的快速方法,运行时间不到 1ms,所以不用担心输入/输出。
标签: java string performance replaceall string-utils