On 05/27/2015 01:10 PM, Xueming Shen wrote:
On 05/27/2015 12:43 PM, Ivan Gerasimov wrote:
On 27.05.2015 21:08, Xueming Shen wrote:
targLen = max(1, tagLen); ?
Well, almost :)
With such targLen, (i = j + targLen) would result in i == length() + 1, which
will cause IOOBE in the following append().
I'm sure the algorithms can be adopted to run correctly with empty target, it
just needs some accurate checking.
But why can't we consider the first variant of replace()?
http://cr.openjdk.java.net/~igerasim/8058779/02/webrev/
It's still faster and it can handle larger strings without OOME. I think this
is important.
I haven't heard any critics of it except for its relative complexity, comparing
to the original code.
And we have a backup variant with StringBuilder, if problems are found.
Personally I prefer not do "buffer management" issue in replace(),
StringBuilder is just doing
the job fine. If possible I would avoid to have a special method() to just work
a corner case.
"is relative complexity" is a critics. We are trying to see if we can achieve
most of the gain
without such complexity.
-Sherman