写一个函数用来统计字符串中各字母出现的次数。(编程语言使用Java) 示例: 输入:X2Y3XZ,输出:X3Y3Z1; 输入:Z3X(XY)2,输出:X3Y2Z3; 输入:Z4(Y2(XZ2)3)2X2,输出:X8Y4Z16;
时间: 2024-02-19 16:57:46 浏览: 161
Java统计字符串中字符出现次数的方法示例
5星 · 资源好评率100%
好的,以下是 Java 语言的实现:
```java
public static String countLetters(String s) {
// 使用 Map 来记录每个字母出现的次数
Map<Character, Integer> count = new HashMap<>();
// 遍历字符串中的每个字符
for (int i = 0; i < s.length();) {
// 如果当前字符是字母,则找到它的重复次数
if (Character.isLetter(s.charAt(i))) {
int j = i + 1;
while (j < s.length() && Character.isDigit(s.charAt(j))) {
j++;
}
// 将字母和重复次数添加到 Map 中
char letter = s.charAt(i);
int freq = Integer.parseInt(s.substring(i + 1, j));
count.put(letter, count.getOrDefault(letter, 0) + freq);
// 更新下一次遍历的起点
i = j;
} else {
i++;
}
}
// 将 Map 中的结果拼接成字符串输出
StringBuilder sb = new StringBuilder();
for (Map.Entry<Character, Integer> entry : count.entrySet()) {
sb.append(entry.getKey()).append(entry.getValue());
}
return sb.toString();
}
```
这个函数也是使用一个 Map 来记录每个字母出现的次数,然后遍历输入字符串中的每个字符。如果当前字符是字母,则找到它的重复次数,并将字母和重复次数添加到 Map 中;否则直接跳过。最后将 Map 中的结果拼接成字符串输出。
例如,`countLetters("X2Y3XZ")` 的输出结果是 `"X3Y3Z1"`,`countLetters("Z3X(XY)2")` 的输出结果是 `"X3Y2Z3"`,`countLetters("Z4(Y2(XZ2)3)2X2")` 的输出结果是 `"X8Y4Z16"`。
阅读全文