aboutsummaryrefslogtreecommitdiff
path: root/challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-09-03 21:38:53 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-09-03 21:38:53 +0100
commit0ea24ad3f2e62e9531e778ee31b582d73efe4b77 (patch)
tree72f6f4d626a3cdbea98d71ad60d9c08a8b83b3e7 /challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java
parent198cd4bdf0fc36df387cf2a636fadbfb74f9a169 (diff)
downloadperlweeklychallenge-club-0ea24ad3f2e62e9531e778ee31b582d73efe4b77.tar.gz
perlweeklychallenge-club-0ea24ad3f2e62e9531e778ee31b582d73efe4b77.tar.bz2
perlweeklychallenge-club-0ea24ad3f2e62e9531e778ee31b582d73efe4b77.zip
- Added solutions to week 180.
Diffstat (limited to 'challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java')
-rw-r--r--challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java72
1 files changed, 72 insertions, 0 deletions
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<Character> chars_array = new ArrayList<Character>();
+ Map<Character, Integer> chars_map = new TreeMap<Character, Integer>();
+ 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;
+ }
+}