算法笔记---统计一个给定字符串中指定字符出现的次数,统计每个单词有多少个字母

1.统计字符

2.统计单词

1.统计字符:统计一个给定字符串中指定的字符出现的次数,题目来源:牛客网

题目描述

输出示例:

题目分析

(1)读到“#”时输入结束,使用break语句;

(2)定义两个字符数组,使用gets()读入;

(3)因为要统计第一行中字符串中的每个字符在第2行中出现的次数,故for循环遍历第一行中的每个字符,然后依次和第2行中的每个字符比较;

(4)定义一个数组,存储每个字符出现的次数;

代码:

#include<iostream>
#include<string.h>
using namespace std;
int main(){
	char a[5],b[80];	
	while(gets(a)){
		int count[5]={0};
		if(a[0]=='#'){
			break;
		}
		gets(b);
		for(int i=0;i<strlen(a);i++){
			for(int j=0;j<strlen(b);j++){
				if(a[i]==b[j]){
					count[i]++;
				}
			}
		}
		for(int k=0;k<strlen(a);k++){
			printf("%c %d\n",a[k],count[k]);
		}
	}
	return 0;
}

代码分析:

(1)注意count[i]数组用来存储每个字符出现的次数

if(a[i]==b[j]){
	count[i]++;
}

2.统计单词:统计每个单词含有多少个字符

题目描述:

题目分析:

(1)定义一个字符数组,用来存储一行文字;

(2)使用if语句判断,判断字符是否为'.',判断是否有空格;

(3)不需要使用一个数组存储每个单词包含的字母个数,在遇到空格或者'.'时直接输出即可,然后将计数的变量重新置为0,记录下一个单词包含的字母个数

代码:

#include<iostream>
#include<string.h>
using namespace std;
int main(){
	char str[100];
	while(gets(str)){		
		int t=0,count=0;
		while(str[t]!='\0'){			
			if(str[t]=='.'){
				printf("%d",count);
			}
			if(str[t]==' '){
				printf("%d ",count);
				count=0;
			}
			if(str[t]!=' '){
				count++;
			}			
			t++;	
		}		
	}
	return 0; 
} 

(1)while循环那里,也可以用for循环来表示

for(t=0;t<strlen(str);t++){

}

(2)if判断时,如果遇到空格,输出count的值,然后要注意将count置为0,记录下一个单词;

if(str[t]==' '){
	printf("%d ",count);
	count=0;
}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用一个字典来统计多个字符串每个字母出现次数,然后再遍历这个字典,找到出现次数最多的字母。具体的实现步骤如下: 1. 定义一个空字典,用于存储每个字母出现次数。 2. 遍历多个字符串,对于每个字符串,遍历其每个字母,如果字母已经在字典,则将对应的值加一,否则将字母作为键,值设置为1。 3. 遍历字典,找到值最大的键,即为出现次数最多的字母。 以下是一个简单的 Python 代码示例: ```python def find_most_frequent_letter(strings): letter_count = {} for string in strings: for letter in string: if letter in letter_count: letter_count[letter] += 1 else: letter_count[letter] = 1 most_frequent_letter = '' max_count = 0 for letter, count in letter_count.items(): if count > max_count: most_frequent_letter = letter max_count = count return most_frequent_letter ``` 这个函数接受一个字符串列表作为参数,返回出现次数最多的字母。可以像这样调用: ```python strings = ['hello', 'world', 'foo', 'bar'] most_frequent_letter = find_most_frequent_letter(strings) print(most_frequent_letter) # 输出 'o' ``` ### 回答2: 编写一个函数,统计多个字符串哪个字母出现次数最多。首先,我们可以创建一个空字典,用于存储每个字母及其出现次数。然后,遍历每个字符串,对于每个字符,判断它是否为字母(通过isalpha()函数),如果是,则更新字典对应字母的计数器。最后,找到字典出现次数最多的字母及其对应的计数器,并返回该字母及其出现次数。 以下是具体实现的代码示例: ```python def find_most_frequent_letter(*strings): counter = {} # 遍历每个字符串 for string in strings: # 遍历每个字符 for char in string: # 判断字符是否为字母 if char.isalpha(): # 更新字母计数器 if char in counter: counter[char] += 1 else: counter[char] = 1 # 找到出现次数最多的字母及其计数器 most_frequent_letter = '' max_count = 0 for letter, count in counter.items(): if count > max_count: most_frequent_letter = letter max_count = count return most_frequent_letter, max_count ``` 这个函数接受任意数量的字符串作为参数,并返回出现次数最多的字母及其出现次数。例如: ```python strings = ["hello", "world", "python"] most_frequent_letter, count = find_most_frequent_letter(*strings) print("出现次数最多的字母是:%s,出现次数:%d" % (most_frequent_letter, count)) ``` 输出结果为: ``` 出现次数最多的字母是:o,出现次数:3 ``` 这表示在给定字符串字母"o"出现了3次,为最频繁出现字母。 ### 回答3: 编写一个统计多个字符串哪个字母出现次数最多的程序的思路如下: 1. 创建一个字典来存储每个字母和它们的出现次数。 2. 遍历每个字符串,对于每个字符,如果它是字母并且不是空格,则将其添加到字典。 3. 对于字典每个字母,如果它已经存在,则将它的出现次数加1,否则将其初始值设为1。 4. 找到字典出现次数最多的字母,记录它的出现次数字母本身。 5. 返回出现次数最多的字母和它的出现次数。 以下是使用Python实现上述思路的代码示例: ```python def find_most_frequent_letter(strings): char_count = {} most_frequent_char = '' highest_count = 0 for string in strings: for char in string: if char.isalpha() and char != ' ': if char in char_count: char_count[char] += 1 else: char_count[char] = 1 for char, count in char_count.items(): if count > highest_count: highest_count = count most_frequent_char = char return most_frequent_char, highest_count ``` 使用该函数可以统计多个字符串最常出现字母和它的出现次数。例如: ```python strings = ['hello', 'world', 'hi', 'python'] most_frequent_letter, count = find_most_frequent_letter(strings) print("出现次数最多的字母是:", most_frequent_letter) print("它出现次数为:", count) ``` 输出: ``` 出现次数最多的字母是: o 它出现次数为: 3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值