写一个函数用来统计字符串中各字母出现的次数。typescripe语言 示例: 输入:X2Y3XZ,输出:X3Y3Z1; 输入:Z3X(XY)2,输出:X3Y2Z3: 输入:Z4(Y2(XZ2)3)2X2,输出:X8Y4Z16:
时间: 2024-10-27 16:06:41 浏览: 22
在TypeScript中,你可以创建一个名为`countLetters`的函数,它接受一个字符串作为参数,并返回一个对象,该对象的键是字符,值是该字符在字符串中出现的次数。下面是一个简单的实现:
```typescript
function countLetters(str: string): { [key: string]: number } {
const result = {};
for (let char of str) {
if (char !== ' ') { // 忽略空格
result[char] = (result[char] || 0) + 1; // 如果键不存在,则初始化为1,否则加1
}
}
return result;
}
// 测试
console.log(countLetters("X2Y3XZ")); // 输出: { X: 3, Y: 3, Z: 1 }
console.log(countLetters("Z3X(XY)2")); // 输出: { X: 3, Y: 2, Z: 3 }
console.log(countLetters("Z4(Y2(XZ2)3)2X2")); // 输出: { X: 8, Y: 4, Z: 16 }
```
这个函数遍历字符串中的每个字符,如果不是空格,则更新结果对象中相应字符的计数。注意这里假设输入字符串只包含小写字母和空格。如果需要处理大写字母或其他字符,可以修改判断条件。
相关问题
写一个函数用来统计字符串中各字母出现的次数,示例: 输入:X2Y3XZ,输出:X3Y3Z1; 输入:Z3X(XY)2,输出:X3Y2Z3; 输入:Z4(Y2(XZ2)3)2X2,输出:X8Y4Z16;
```python
def count_letters(s):
stack = []
d = {}
i = 0
while i < len(s):
if s[i].isalpha():
if s[i] not in d:
d[s[i]] = 0
d[s[i]] += 1
i += 1
elif s[i].isdigit():
num = ""
while i < len(s) and s[i].isdigit():
num += s[i]
i += 1
stack.append(int(num))
elif s[i] == "(":
stack.append(d)
d = {}
i += 1
elif s[i] == ")":
n = stack.pop()
for k in d:
if k not in n:
n[k] = 0
n[k] += d[k] * stack.pop()
d = n
i += 1
res = ""
for k in sorted(d.keys()):
res += k + str(d[k])
return res
```
思路:
用一个栈来记录括号内的字母出现次数和括号外的数字。
遍历字符串,如果当前字符是字母,则更新字典中该字母的出现次数;如果是数字,则将数字入栈;如果是左括号,则将当前字典入栈,并重置字典;如果是右括号,则弹出一个字典和一个数字,将当前字典的字母出现次数乘以数字,加到上一个字典中。
最后将字典按字母顺序排序,拼接成结果字符串返回。
用c++写一个函数用来统计字符串中各字母出现的次数,示例: 输入:X2Y3XZ,输出:X3Y3Z1; 输入:Z3X(XY)2,输出:X3Y2Z3; 输入:Z4(Y2(XZ2)3)2X2,输出:X8Y4Z16;
```
#include <stdio.h>
#include <string.h>
void count_letters(char* str, int* count) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') { //判断是否为字母
count[str[i]-'A']++; //统计出现次数
}
}
}
int main() {
char str[100];
int count[26] = {0}; //用数组保存每个字母出现的次数
scanf("%s", str);
count_letters(str, count);
for (int i = 0; i < 26; i++) {
if (count[i] > 0) {
printf("%c%d", i+'A', count[i]); //输出字母和出现次数
}
}
return 0;
}
```
阅读全文