/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
String[] parts
= str.
split("(?=\\Q" + word
+ "\\E)+|(?<=\\Q" + word
+ "\\E)+",
-1); StringBuilder sb = new StringBuilder(str.length());
for (int i = 0; i < parts.length; i++) {
sb.append(i % 2 == 0 ? parts[i].replaceAll(".", "+") : parts[i]);
}
return sb.toString();
}
String[] parts
= str.
split(Pattern.
quote(word
),
-1); StringBuilder sb = new StringBuilder(str.length());
for (int i = 0; i < parts.length; i++) {
if (i > 0) {
sb.append(word);
}
sb.append(parts[i].replaceAll(".", "+"));
}
return sb.toString();
}
return Stream.of(str.split("\\Q" + word + "\\E", -1))
.map(fill -> fill.replaceAll(".", "+"))
.collect(Collectors.joining(word));
}
public static void main
(String[] args
) { String[] tests
= {"Helloabcthereabchi",
"monkey-monkeymonkey"}; System.
out.
printf("Input: %s\nJava7: %s\nJavaP: %s\nJava8: %s\n\n", s, plusOut
(s, word
), plusOutP
(s, word
), plusOut8
(s, word
)); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uU3RyZWFtOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CiAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBwbHVzT3V0KFN0cmluZyBzdHIsIFN0cmluZyB3b3JkKSB7CiAgICAgICAgU3RyaW5nW10gcGFydHMgPSBzdHIuc3BsaXQoIig/PVxcUSIgKyB3b3JkICsgIlxcRSkrfCg/PD1cXFEiICsgd29yZCArICJcXEUpKyIsIC0xKTsKICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoc3RyLmxlbmd0aCgpKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHNiLmFwcGVuZChpICUgMiA9PSAwID8gcGFydHNbaV0ucmVwbGFjZUFsbCgiLiIsICIrIikgOiBwYXJ0c1tpXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzYi50b1N0cmluZygpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBwbHVzT3V0UChTdHJpbmcgc3RyLCBTdHJpbmcgd29yZCkgewogICAgICAgIFN0cmluZ1tdIHBhcnRzID0gc3RyLnNwbGl0KFBhdHRlcm4ucXVvdGUod29yZCksIC0xKTsKICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoc3RyLmxlbmd0aCgpKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChpID4gMCkgewogICAgICAgICAgICAgICAgc2IuYXBwZW5kKHdvcmQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNiLmFwcGVuZChwYXJ0c1tpXS5yZXBsYWNlQWxsKCIuIiwgIisiKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzYi50b1N0cmluZygpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBwbHVzT3V0OChTdHJpbmcgc3RyLCBTdHJpbmcgd29yZCkgewogICAgICAgIHJldHVybiBTdHJlYW0ub2Yoc3RyLnNwbGl0KCJcXFEiICsgd29yZCArICJcXEUiLCAtMSkpCiAgICAgICAgICAgIC5tYXAoZmlsbCAtPiBmaWxsLnJlcGxhY2VBbGwoIi4iLCAiKyIpKQogICAgICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLmpvaW5pbmcod29yZCkpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU3RyaW5nW10gdGVzdHMgPSB7IkhlbGxvYWJjdGhlcmVhYmNoaSIsICJtb25rZXktbW9ua2V5bW9ua2V5In07CiAgICAgICAgU3RyaW5nIHdvcmQgPSAibW9ua2V5IjsKICAgICAgICBmb3IgKFN0cmluZyBzIDogdGVzdHMpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIklucHV0OiAlc1xuSmF2YTc6ICVzXG5KYXZhUDogJXNcbkphdmE4OiAlc1xuXG4iLCBzLCBwbHVzT3V0KHMsIHdvcmQpLCBwbHVzT3V0UChzLCB3b3JkKSwgcGx1c091dDgocywgd29yZCkpOwogICAgICAgIH0KICAgIH0KICAgIH0=