From 0ea24ad3f2e62e9531e778ee31b582d73efe4b77 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Sat, 3 Sep 2022 21:38:53 +0100 Subject: - Added solutions to week 180. --- .../theweeklychallenge/FirstUniqueCharacter.java | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java (limited to 'challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java') diff --git a/challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java b/challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java new file mode 100644 index 0000000000..34bf56bc6a --- /dev/null +++ b/challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java @@ -0,0 +1,72 @@ +package theweeklychallenge; + +/* + +Week 180: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-180 + +Task #1: First Unique Character + + You are given a string, $s. + + Write a script to find out the first unique character in the + given string and print its index (0-based). + +Compile and Run: + + mohammad-anwar/java$ javac theweeklychallenge/FirstUniqueCharacter.java + mohammad-anwar/java$ java theweeklychallenge.FirstUniqueCharacter + +*/ + +import java.util.Map; +import java.util.TreeMap; +import java.util.ArrayList; +import junit.framework.TestCase; +import static junit.framework.Assert.*; + +public class FirstUniqueCharacter extends TestCase { + + public static void main(String[] args) { + junit.textui.TestRunner.run( + theweeklychallenge.FirstUniqueCharacter.class); + } + + public void testDammAlgorithm() { + assertEquals(firstUniqueCharacter("Perl Weekly Challenge"), 0); + assertEquals(firstUniqueCharacter("Long Live Perl"), 1); + } + + public static int firstUniqueCharacter(String str) { + char[] chars = str.toCharArray(); + ArrayList chars_array = new ArrayList(); + Map chars_map = new TreeMap(); + int j = 0; + for (int i = 0; i < chars.length; i++) { + char c = chars[i]; + if (Character.compare(c, ' ') == 0) { + continue; + } + c = Character.toLowerCase(c); + if (chars_map.containsKey(c)) { + chars_map.put(c, chars_map.get(c) + 1); + } + else { + chars_array.add(c); + chars_map.put(c, 1); + j++; + } + } + + int k = 0; + for (char c : chars_array) { + if (chars_map.get(c) == 1) { + break; + } + k++; + } + + return k; + } +} -- cgit