package com.shekhargulati.ninetynine_problems._01_lists; import java.util.AbstractMap.SimpleEntry; import java.util.LinkedList; import java.util.List; import java.util.Objects; /** * <b>(**) Run-length encoding of a list (direct solution)</b> */ public class P13 { public static List<SimpleEntry<Integer, String>> encode_direct(List<String> list) { LinkedList<SimpleEntry<Integer, String>> result = new LinkedList<>(); String lastElem = null; for (String elem : list) { if (Objects.equals(lastElem, elem)) { SimpleEntry<Integer, String> last = result.removeLast(); result.add(new SimpleEntry<>(last.getKey() + 1, elem)); } else { result.add(new SimpleEntry<>(1, elem)); lastElem = elem; } } return result; } }