Counting sort

Instructions

  • Input: [[0, 'a'], [0, 'b'], [1, 'c']]
  • String with same integer should be printed in same order
  • First half of array replaced by -

My solution

function coutingSort(arr, arrLen) {
	const countArr = [];
	for (let i = 0; i < arrLen; i++) {
		if (countArr[i]) {
			countArr[i]+=1;
		} else {
			countArr[i] = arr[i];
		}
	}
}
const test = [1,1,1,1,1,1,0,0];

Solution Java

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
 
public class Solution {
    public static void main(String[] args) throws IOException {
        final int maxValue = 100;
        
        /* Create HashMap with empty "buckets" to put Strings into */
        HashMap<Integer, ArrayList<String>> map = new HashMap<>(maxValue);
        for (int i = 0; i < maxValue; i++) {
            map.put(i, new ArrayList<String>());
        }
        
        /* Save input */
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            String [] pair = br.readLine().split(" ");
            int key        = Integer.parseInt(pair[0]);
            String value   = (i < n/2) ? "-" : pair[1];
            
            ArrayList<String> list = map.get(key);
            list.add(value);
        }
        br.close();
        
        /* Print output */
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < maxValue; i++) {
            ArrayList<String> values = map.get(i);
            for (String str : values) {
                sb.append(str + " ");
            }
        }
        System.out.println(sb);
    }
}