From 218420ca9c9c744ce225312a44fe03110ff725b7 Mon Sep 17 00:00:00 2001 From: Shawn Date: Mon, 17 Aug 2020 04:59:47 -0700 Subject: Solutions for challenge 074. Both parts, in perl, tcl and java. --- challenge-074/shawn-wagner/java/ch2.java | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 challenge-074/shawn-wagner/java/ch2.java (limited to 'challenge-074/shawn-wagner/java/ch2.java') diff --git a/challenge-074/shawn-wagner/java/ch2.java b/challenge-074/shawn-wagner/java/ch2.java new file mode 100644 index 0000000000..65a8a04a67 --- /dev/null +++ b/challenge-074/shawn-wagner/java/ch2.java @@ -0,0 +1,31 @@ +// Same algorithm as the perl version, using a LinkedHashMap to +// preserve order of keys, and streams to avoid most loops. + +import java.util.*; + +class ch2 { + private static void task2(String s) { + ArrayList chars = new ArrayList(); + chars.ensureCapacity(s.length()); + s.chars().forEach(ch -> chars.add((char)ch)); + Collections.reverse(chars); + StringBuilder sb = new StringBuilder(); + while (chars.size() > 0) { + HashMap counts = + new LinkedHashMap(); + chars.stream().forEach(ch -> counts.put(ch, counts.getOrDefault(ch, 0) + 1)); + char fnr = counts.entrySet().stream() + .filter(entry -> entry.getValue() == 1) + .findFirst().map(entry -> entry.getKey()).orElse('#'); + sb.append(fnr); + chars.remove(0); + } + sb.reverse(); + System.out.println(sb); + } + + public static void main(String[] args) { + task2("ababc"); + task2("xyzzyx"); + } +} -- cgit