import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
class _16319749 {
public static void main
( String [ ] args
) { nonregex( ) ;
regex( ) ;
}
public static void nonregex( ) {
String poem
= "In software, a stack overflow [apple] occurs" + " when too much memory [orange] is used on the call stack [banana]."
+ " The call stack [pear] contains a limited amount of memory,"
+ " often determined at the start of the program [apple]." ;
HashMap
< String , String
> rep
= new HashMap
< String , String
> ( ) ;
rep.put ( "[apple]" , "<img src='apple.jpg' />" ) ;
rep.put ( "[banana]" , "<img src='banana.jpg' />" ) ;
rep.put ( "[orange]" , "<img src='orange.jpg' />" ) ;
rep.put ( "[pear]" , "<img src='pear.jpg' />" ) ;
for ( String fruit
: rep.
keySet ( ) ) poem = poem.replace ( fruit, rep.get ( fruit) ) ;
}
public static void regex( ) {
String poem
= "In software, a stack overflow [apple] occurs" + " when too much memory [orange] is used on the call stack [banana]."
+ " The call stack [pear] contains a limited amount of memory,"
+ " often determined at the start of the program [apple]." ;
List< String> fruits = new ArrayList< String> ( ) ;
fruits.add ( "[apple]" ) ;
fruits.add ( "[banana]" ) ;
fruits.add ( "[pear]" ) ;
fruits.add ( "[orange]" ) ;
String pattern
= "\\ [(?<=\\ [)(\\ w+)(?=])\\ ]" ; poem = poem.replaceAll ( pattern, "<img src='$1.jpg' />" ) ;
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwoKY2xhc3MgXzE2MzE5NzQ5IHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBub25yZWdleCgpOwogICAgICAgIHJlZ2V4KCk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBub25yZWdleCgpIHsKICAgICAgICBTdHJpbmcgcG9lbSA9ICJJbiBzb2Z0d2FyZSwgYSBzdGFjayBvdmVyZmxvdyBbYXBwbGVdIG9jY3VycyIKICAgICAgICAgICAgICAgICsgIiB3aGVuIHRvbyBtdWNoIG1lbW9yeSBbb3JhbmdlXSBpcyB1c2VkIG9uIHRoZSBjYWxsIHN0YWNrIFtiYW5hbmFdLiIKICAgICAgICAgICAgICAgICsgIiBUaGUgY2FsbCBzdGFjayBbcGVhcl0gY29udGFpbnMgYSBsaW1pdGVkIGFtb3VudCBvZiBtZW1vcnksIgogICAgICAgICAgICAgICAgKyAiIG9mdGVuIGRldGVybWluZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIFthcHBsZV0uIjsKCiAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CgogICAgICAgIHJlcC5wdXQoIlthcHBsZV0iLCAiPGltZyBzcmM9J2FwcGxlLmpwZycgLz4iKTsKICAgICAgICByZXAucHV0KCJbYmFuYW5hXSIsICI8aW1nIHNyYz0nYmFuYW5hLmpwZycgLz4iKTsKICAgICAgICByZXAucHV0KCJbb3JhbmdlXSIsICI8aW1nIHNyYz0nb3JhbmdlLmpwZycgLz4iKTsKICAgICAgICByZXAucHV0KCJbcGVhcl0iLCAiPGltZyBzcmM9J3BlYXIuanBnJyAvPiIpOwoKICAgICAgICBmb3IgKFN0cmluZyBmcnVpdCA6IHJlcC5rZXlTZXQoKSkKICAgICAgICAgICAgcG9lbSA9IHBvZW0ucmVwbGFjZShmcnVpdCwgcmVwLmdldChmcnVpdCkpOwogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwb2VtKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2V4KCkgewogICAgICAgIFN0cmluZyBwb2VtID0gIkluIHNvZnR3YXJlLCBhIHN0YWNrIG92ZXJmbG93IFthcHBsZV0gb2NjdXJzIgogICAgICAgICAgICAgICAgKyAiIHdoZW4gdG9vIG11Y2ggbWVtb3J5IFtvcmFuZ2VdIGlzIHVzZWQgb24gdGhlIGNhbGwgc3RhY2sgW2JhbmFuYV0uIgogICAgICAgICAgICAgICAgKyAiIFRoZSBjYWxsIHN0YWNrIFtwZWFyXSBjb250YWlucyBhIGxpbWl0ZWQgYW1vdW50IG9mIG1lbW9yeSwiCiAgICAgICAgICAgICAgICArICIgb2Z0ZW4gZGV0ZXJtaW5lZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gW2FwcGxlXS4iOwogICAgICAgIAogICAgICAgIExpc3Q8U3RyaW5nPiBmcnVpdHMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKICAgICAgICBmcnVpdHMuYWRkKCJbYXBwbGVdIik7CiAgICAgICAgZnJ1aXRzLmFkZCgiW2JhbmFuYV0iKTsKICAgICAgICBmcnVpdHMuYWRkKCJbcGVhcl0iKTsKICAgICAgICBmcnVpdHMuYWRkKCJbb3JhbmdlXSIpOwogICAgICAgIAogICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIlxcWyg/PD1cXFspKFxcdyspKD89XSlcXF0iOwogICAgICAgIHBvZW0gPSBwb2VtLnJlcGxhY2VBbGwocGF0dGVybiwgIjxpbWcgc3JjPSckMS5qcGcnIC8+Iik7CiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBvZW0pOwogICAgfQp9Cg==