用java写一个函数用来统计字符串中各字母出现的次数 示例: 输入:X2Y3XZ,输出:X3Y3Z1; 输入:Z3X(XY)2,输出:X3Y2Z3; 输入:Z4(Y2(XZ2)3)2X2,输出:X8Y4Z16;
时间: 2024-03-20 07:43:57 浏览: 83
Java编程实现统计一个字符串中各个字符出现次数的方法
以下是 Java 语言的实现:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
public class CharCount {
public static String countChars(String s) {
Stack<Character> stack = new Stack<>();
Map<Character, Integer> counts = new HashMap<>();
int i = 0;
while (i < s.length()) {
if (Character.isLetter(s.charAt(i))) {
int j = i + 1;
while (j < s.length() && Character.isDigit(s.charAt(j))) {
j++;
}
int count = Integer.parseInt(s.substring(i+1, j));
if (!stack.isEmpty()) {
char c = stack.peek();
counts.put(c, counts.getOrDefault(c, 0) + count);
} else {
char c = s.charAt(i);
counts.put(c, count);
}
i = j;
} else if (s.charAt(i) == '(') {
stack.push(s.charAt(i-1));
i++;
} else if (s.charAt(i) == ')') {
stack.pop();
i++;
}
}
StringBuilder sb = new StringBuilder();
for (char c : counts.keySet()) {
sb.append(c).append(counts.get(c));
}
return sb.toString();
}
}
```
该函数和上面的 Python 版本基本一致,只是语法上有些差别。注意在 Java 中,需要使用包装类 Integer 来将字符串转换为数字。此外,Java 中的 Map 和 StringBuilder 也不同于 Python 中的字典和字符串拼接。
阅读全文