将String aaaabbbbddd转换为a4b4d3

use*_*486 8 java string

我正在努力开始练习面试问题,我遇到了这个问题:

将String aaaabbbbddd转换为a4b4d3

您基本上希望将现有字符串转换为每个唯一字符出现次数和字符出现次数的字符串.

这是我的解决方案,但我认为它可以被提炼成更优雅的东西:

    String s = "aaaabbbbddd";
    String modified = "";
    int len = s.length();
    char[] c = s.toCharArray();
    int count = 0;
    for (int i = 0; i < len; i++) {
        count = 1;
        for (int j = i + 1; j < len; j++) {
            if (c[i] == ' ') {
                break;
            }
            if (c[i] == c[j]) {
                count++;
                c[j] = ' ';
            }

        }
        if (c[i] != ' ') {
            modified += c[i] + "" +  count; 

        }
    }
    System.out.println(modified);
Run Code Online (Sandbox Code Playgroud)

有没有人对解决方案有任何其他建议?

Mak*_*oto 9

Map<Character, Integer>改为使用.尝试将新角色插入地图; 如果它已经存在,则递增该特定字符的值.

例:

Map<Character, Integer> countMap = new HashMap<>();
if(!countMap.containsKey('a')) {
    countMap.put('a', 1);
} else {
    countMap.put('a', countMap.get('a') + 1);
}
Run Code Online (Sandbox Code Playgroud)