import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param param string字符串
     * @return string字符串
     */
    public String compressString (String param) {
        // write code here
        //空字符串直接返回
        if ("".equals(param)) {
            return "";
        }
        List<Map<Character, Integer>> list = new ArrayList<>();

        char[] chars = param.toCharArray();
        Character cur = chars[0];
        String compressStr = "";
        String temp = "";
        int count = 1;
        HashMap<Character, Integer> characterIntegerHashMap;

        //shopeew
        //aabcccccaaa
        for (int i = 0; i < chars.length; i++) {
            //边界处理
            if (i == (chars.length - 1)) {
                characterIntegerHashMap = new HashMap<>();
                characterIntegerHashMap.put(chars[i], count);
                list.add(characterIntegerHashMap);
                count = 1;
                break;
            }

            if ((chars[i] == chars[i + 1])) {
                count++;
            } else {
                characterIntegerHashMap = new HashMap<>();
                characterIntegerHashMap.put(chars[i], count);
                list.add(characterIntegerHashMap);
                count = 1;
            }
        }

        for (int i = 0; i < list.size(); i++) {
            String curStr = "";
            Character key = 'c';

            Map<Character, Integer> characterIntegerMap = list.get(i);
            Iterator<Character> iterator = characterIntegerMap.keySet().iterator();

            while (iterator.hasNext()) {
                key = iterator.next();
            }
            Integer integer = characterIntegerMap.get(key);

            if (integer == 1) {
                curStr = key.toString();
            } else {
                curStr = key.toString() + integer;
            }

            compressStr += curStr;
        }

        return compressStr;
    }
}