编写一段程序,通过map类型统计不同字符个数。 例:输入:abc,输出:3 输入:aabcc,输出:3 用go语言
时间: 2024-11-04 09:11:09 浏览: 10
在Go语言中,你可以使用`map`数据结构结合`for`循环和字符串切片来编写一个函数,用于统计给定字符串中每个字符的出现次数。下面是一个简单的示例:
```go
package main
import (
"fmt"
)
func countChars(s string) map[rune]int {
charCount := make(map[rune]int)
for _, char := range s {
charCount[char]++
}
return charCount
}
func main() {
inputs := []string{"abc", "aabcc"}
for _, str := range inputs {
charCounts := countChars(str)
fmt.Printf("输入:%q,输出:%v\n", str, charCounts)
}
}
```
在这个例子中,我们首先创建了一个空的`map[rune]int`,然后遍历输入字符串`s`中的每一个字符。对于每个字符,我们在`charCount`地图中对应的值加一。最后,在`main`函数中,我们对一组输入进行处理,并打印出每个字符串中各个字符的计数值。
相关问题
依次读入3个非空字符串:字符串1、字符串2、字符串3 ,输入的3个字符串最大长度不超过100,且字符串3的长度至少比字符串2的长度少1 。 然后在字符串1中搜索是否有子串与字符串2相等,如果相等,则用字符串3替换字符串1中该子串部分。 重复上述搜索与替换过程,直到字符串1中不存在子串与字符串2相等。 输入格式: 输入3个用空格分隔的字符串。 输出格式: 被替换后的字符串1的内容。 输入样例1: aabcd abc ef 输出样例1: aefd 输入样例2: aabcc abc b 输出样例2: b 用c语言代码实现
以下是实现该功能的 C 代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s1[101], s2[101], s3[101];
scanf("%s %s %s", s1, s2, s3);
while (strstr(s1, s2) != NULL) {
int pos = strstr(s1, s2) - s1;
int len1 = strlen(s1), len2 = strlen(s2), len3 = strlen(s3);
char temp[101];
strcpy(temp, s1 + pos + len2);
s1[pos] = '\0';
strcat(s1, s3);
strcat(s1, temp);
if (len1 == strlen(s1)) break;
}
printf("%s\n", s1);
return 0;
}
```
写一个c语言程序,输入一个字符串,若其中包含abc,则将其替换为AA。如输入aabcc替换为aAAc
当你需要编写一个C语言程序来完成这样的任务时,可以使用`for`循环遍历字符串,并通过`strcmp()`函数检查是否包含"abc"。如果找到,就用"AA"替换它。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void replace_ABC(char* str) {
int len = strlen(str);
for (int i = 0; i <= len - 3; i++) { // 避免越界,假设最坏情况是abc正好位于字符串末尾
if (strncmp(&str[i], "abc", 3) == 0) {
strncpy(&str[i], "AA", 2); // 只替换"abc",不包括后面的字符
str[i + 2] = '\0'; // 确保字符串结束
}
}
}
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin); // 读取用户输入,包括换行符
// 移除fgets添加的换行符
input[strcspn(input, "\n")] = '\0';
replace_ABC(input);
printf("替换后的字符串是: %s\n", input);
return 0;
}
```
运行这个程序时,它会提示你输入一个字符串,然后查找并替换其中的"abc"为"AA"。
阅读全文