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 ++++++++++++++++++++++ .../java/theweeklychallenge/TrimList.java | 63 +++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 challenge-180/mohammad-anwar/java/theweeklychallenge/FirstUniqueCharacter.java create mode 100644 challenge-180/mohammad-anwar/java/theweeklychallenge/TrimList.java (limited to 'challenge-180/mohammad-anwar/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; + } +} diff --git a/challenge-180/mohammad-anwar/java/theweeklychallenge/TrimList.java b/challenge-180/mohammad-anwar/java/theweeklychallenge/TrimList.java new file mode 100644 index 0000000000..711ab8ec74 --- /dev/null +++ b/challenge-180/mohammad-anwar/java/theweeklychallenge/TrimList.java @@ -0,0 +1,63 @@ +package theweeklychallenge; + +/* + +Week 180: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-180 + +Task #2: Trim List + + You are given list of numbers, @n and an integer $i. + + Write a script to trim the given list where element is less than + or equal to the given integer. + +Compile and Run: + + mohammad-anwar/java$ javac theweeklychallenge/TrimList.java + mohammad-anwar/java$ java theweeklychallenge.TrimList + +*/ + +import java.util.Map; +import java.util.TreeMap; +import java.util.Arrays; +import java.util.ArrayList; +import junit.framework.TestCase; +import static junit.framework.Assert.*; + +public class TrimList extends TestCase { + + public static void main(String[] args) { + junit.textui.TestRunner.run( + theweeklychallenge.TrimList.class); + } + + public void testTrimListExample1() { + int i = 3; + Integer[] n = {1, 4, 2, 3, 5}; + Integer[] got = trimList(i, n); + Integer[] exp = {4, 5}; + assertEquals(Arrays.toString(exp), Arrays.toString(got)); + } + + public void testTrimListExample2() { + int i = 4; + Integer[] n = {9, 0, 6, 2, 3, 8, 5}; + Integer[] got = trimList(i, n); + Integer[] exp = {9, 6, 8, 5}; + assertEquals(Arrays.toString(exp), Arrays.toString(got)); + } + + public static Integer[] trimList(int i, Integer[] n) { + ArrayList list = new ArrayList(); + for (int j : n) { + if (j > i) { + list.add(j); + } + } + + return list.toArray(new Integer[list.size()]); + } +} -- cgit