我试图在练习面试问题上取得领先,而我遇到了这个问题:

将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);

有人对解决方案有其他建议吗?

最佳答案

改用Map<Character, Integer>。尝试将新角色插入 map ;如果已经存在,则增加该特定字符的值。

例子:

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

关于java - 将String aaaabbbbddd转换为a4b4d3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20309182/

10-08 22:06