import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ideone {
public static void main
(String[] args
) { test("I like visiting my friend Will, who lives in Orlando, Florida.");
}
private static void test
(String input
) { Map
<Integer, AtomicInteger
> wordCounts
= new HashMap
<>(); for (Matcher m = Pattern.compile("\\p{L}+").matcher(input); m.find(); ) {
m.
group().
codePoints().
map(Character::toUpperCase
).
distinct().
forEach(ch
-> wordCounts.computeIfAbsent(ch, c -> new AtomicInteger()).incrementAndGet());
}
if (wordCounts.isEmpty())
Entry
<Integer, AtomicInteger
> max
= wordCounts.
entrySet().
stream().
reduce((e1, e2) -> e1.getValue().get() >= e2.getValue().get() ? e1 : e2).get();
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKaW1wb3J0IGphdmEudXRpbC5NYXAuRW50cnk7CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljSW50ZWdlcjsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgpjbGFzcyBJZGVvbmUgewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCXRlc3QoIkkgbGlrZSB2aXNpdGluZyBteSBmcmllbmQgV2lsbCwgd2hvIGxpdmVzIGluIE9ybGFuZG8sIEZsb3JpZGEuIik7Cgl9Cglwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3QoU3RyaW5nIGlucHV0KSB7CgkJTWFwPEludGVnZXIsIEF0b21pY0ludGVnZXI+IHdvcmRDb3VudHMgPSBuZXcgSGFzaE1hcDw+KCk7CgkJZm9yIChNYXRjaGVyIG0gPSBQYXR0ZXJuLmNvbXBpbGUoIlxccHtMfSsiKS5tYXRjaGVyKGlucHV0KTsgbS5maW5kKCk7ICkgewoJCQltLmdyb3VwKCkuY29kZVBvaW50cygpLm1hcChDaGFyYWN0ZXI6OnRvVXBwZXJDYXNlKS5kaXN0aW5jdCgpLmZvckVhY2goY2ggLT4KCQkJCQl3b3JkQ291bnRzLmNvbXB1dGVJZkFic2VudChjaCwgYyAtPiBuZXcgQXRvbWljSW50ZWdlcigpKS5pbmNyZW1lbnRBbmRHZXQoKSk7CgkJfQoJCWlmICh3b3JkQ291bnRzLmlzRW1wdHkoKSkKCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTm8gd29yZHMgaW4gaW5wdXQ6ICIgKyBpbnB1dCk7CgkJRW50cnk8SW50ZWdlciwgQXRvbWljSW50ZWdlcj4gbWF4ID0gd29yZENvdW50cy5lbnRyeVNldCgpLnN0cmVhbSgpLgoJCQkJcmVkdWNlKChlMSwgZTIpIC0+IGUxLmdldFZhbHVlKCkuZ2V0KCkgPj0gZTIuZ2V0VmFsdWUoKS5nZXQoKSA/IGUxIDogZTIpLmdldCgpOwoJCVN5c3RlbS5vdXQucHJpbnRmKCIlcyAlZCVuIiwgbmV3IFN0cmluZyhDaGFyYWN0ZXIudG9DaGFycyhtYXguZ2V0S2V5KCkpKSwgbWF4LmdldFZhbHVlKCkuZ2V0KCkpOwoJfQp9