二、编程题。 写一个函数用来统计字符串中各字母出现的次数。(编程语言不限) 示例: 输入:X2Y3XZ,输出:X3Y3Z1; 输入:Z3X(XY)2,输出:X3Y2Z3; 输入:Z4(Y2(XZ2)3)2X2,输出:X8Y4Z16;
时间: 2024-03-20 22:43:55 浏览: 187
C语言编程-编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数;
5星 · 资源好评率100%
以下是 Python 3 语言的实现:
```python
def count_chars(s):
stack = []
counts = {}
i = 0
while i < len(s):
if s[i].isalpha():
j = i + 1
while j < len(s) and s[j].isdigit():
j += 1
count = int(s[i+1:j])
if stack:
counts[stack[-1]] += count
else:
counts[s[i]] = count
i = j
elif s[i] == '(':
stack.append(s[i-1])
i += 1
elif s[i] == ')':
stack.pop()
i += 1
result = ''
for c in sorted(counts.keys()):
result += c + str(counts[c])
return result
```
该函数维护了一个栈来记录当前所在的括号层数,以及一个字典来记录每个字母出现的次数。遍历字符串,如果遇到字母,则统计出现次数并更新字典;如果遇到左括号,则将当前字母入栈;如果遇到右括号,则将栈顶元素出栈。最后按字母顺序将字母和出现次数拼接成字符串返回。
阅读全文