/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
int startPos = 0;
do {
int matchPos = -1;
int matchStr = -1;
for (int i = 0; i < searchWords.length; i++) {
int pos = str.indexOf(searchWords[i], startPos);
if (pos == -1) {
continue;
}
if (matchPos == -1 || matchPos > pos) {
matchPos = pos;
matchStr = i;
}
}
if (matchPos == -1) {
break;
}
str = str.substring(0, matchPos) + replaceWords[matchStr] + str.substring(matchPos + searchWords[matchStr].length());
startPos = matchPos + replaceWords[matchStr].length();
} while (true);
return str;
}
{
System.
out.
println(replaceEach
( "Once upon a time, there was a foo and a bar.",
));
System.
out.
println(replaceEach
( "a p",
));
System.
out.
println(replaceEach
( "ABCDE",
new String[]{"A",
"B",
"C",
"D",
"E"},
new String[]{"B",
"C",
"E",
"E",
"F"} ));
System.
out.
println(replaceEach
( "ABCDEF",
new String[]{"ABCDEF",
"ABC",
"DEF"},
new String[]{"XXXXXX",
"YYY",
"ZZZ"} ));
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXByaXZhdGUgc3RhdGljIFN0cmluZyByZXBsYWNlRWFjaChTdHJpbmcgc3RyLCBTdHJpbmdbXSBzZWFyY2hXb3JkcywgU3RyaW5nW10gcmVwbGFjZVdvcmRzKSB7CgkJaW50IHN0YXJ0UG9zID0gMDsKCQlkbyB7CgkJCWludCBtYXRjaFBvcyA9IC0xOwoJCQlpbnQgbWF0Y2hTdHIgPSAtMTsKCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzZWFyY2hXb3Jkcy5sZW5ndGg7IGkrKykgewoJCQkJaW50IHBvcyA9IHN0ci5pbmRleE9mKHNlYXJjaFdvcmRzW2ldLCBzdGFydFBvcyk7CgkJCQlpZiAocG9zID09IC0xKSB7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQlpZiAobWF0Y2hQb3MgPT0gLTEgfHwgbWF0Y2hQb3MgPiBwb3MpIHsKCQkJCQltYXRjaFBvcyA9IHBvczsKCQkJCQltYXRjaFN0ciA9IGk7CgkJCQl9CgkJCX0KCQkJaWYgKG1hdGNoUG9zID09IC0xKSB7CgkJCQlicmVhazsKCQkJfQoJCQlzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIG1hdGNoUG9zKSArIHJlcGxhY2VXb3Jkc1ttYXRjaFN0cl0gKyBzdHIuc3Vic3RyaW5nKG1hdGNoUG9zICsgc2VhcmNoV29yZHNbbWF0Y2hTdHJdLmxlbmd0aCgpKTsKCQkJc3RhcnRQb3MgPSBtYXRjaFBvcyArIHJlcGxhY2VXb3Jkc1ttYXRjaFN0cl0ubGVuZ3RoKCk7CgkJfSB3aGlsZSAodHJ1ZSk7CgkJcmV0dXJuIHN0cjsKCX0KCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbihyZXBsYWNlRWFjaCgKCQkgICAgIk9uY2UgdXBvbiBhIHRpbWUsIHRoZXJlIHdhcyBhIGZvbyBhbmQgYSBiYXIuIiwKCQkgICAgbmV3IFN0cmluZ1tdeyJmb28iLCAiYmFyIn0sCgkJICAgIG5ldyBTdHJpbmdbXXsiYmFyIiwgImZvbyJ9CgkJKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKHJlcGxhY2VFYWNoKAoJCSAgICAiYSBwIiwKCQkgICAgbmV3IFN0cmluZ1tdeyJhIiwgInAifSwKCQkgICAgbmV3IFN0cmluZ1tdeyJhcHBsZSIsICJwZWFyIn0KCQkpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4ocmVwbGFjZUVhY2goCgkJICAgICJBQkNERSIsCgkJICAgIG5ldyBTdHJpbmdbXXsiQSIsICJCIiwgIkMiLCAiRCIsICJFIn0sCgkJICAgIG5ldyBTdHJpbmdbXXsiQiIsICJDIiwgIkUiLCAiRSIsICJGIn0KCQkpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4ocmVwbGFjZUVhY2goCgkJICAgICJBQkNERUYiLAoJCSAgICBuZXcgU3RyaW5nW117IkFCQ0RFRiIsICJBQkMiLCAiREVGIn0sCgkJICAgIG5ldyBTdHJpbmdbXXsiWFhYWFhYIiwgIllZWSIsICJaWloifQoJCSkpOwoJfQp9