一串单词找字母出现次数最多的(c++)

#include<iostream>
#include<cstdio>
#include <iomanip>
#include<cmath>
#include<string>
#include<algorithm>
#include<cctype>
using namespace std;
int main()
{
	string A;
	cin >> A;
	char a[27];//存放26个字母 字母顺序作为数组下标方便计数
	int a1[27] = { 0 };//计数
	int k = 97;//小写字母a的ASCII码值
	for (int i = 1; i <= 26; i++)//给字母数组进行赋值
	{
		a[i] = char(k);//char强制转成字符型
		k++;//依次往后加一 字母顺序是连续的
	}
	for (int j = 0; j < A.size(); j++)
	{
		for (int i = 1; i <= 26; i++)
		{
			if (A[j] == a[i])
			{
				a1[i]++;

			}
		}
	}
	int max = a1[1];
	int flag = 1;//记录下标 flag  不能等于0!
	for (int c = 1; c <= 26; c++)
	{

		if (a1[c] > max)
		{
			max = a1[c];
			flag = c;
			
		}
		
		 if(a1[c]==max)
		{ 
			 
			 if (c < flag)
			 {
				
				 max = a1[c];
				 flag = c;
			 }
			
		}
	}
	
	cout << a[flag] << endl;
	cout << max;
		return 0;
}

要解决这个问题,你需要编写一个C++程序,该程序可以读取输入文件中的单词,统计每个字母的出现次数,并计算出现次数最多和最少字母出现次数的差值,最后判断这个差值是否为质数。下面是一个可能的解决方案的概述: 参考资源链接:[NOIP2008:笨小猴的LuckyWord判断](https://wenku.youkuaiyun.com/doc/2sd72hobpd?spm=1055.2569.3001.10343) 首先,你需要创建一个数组来记录每个字母的出现次数。由于单词只包含小写字母,一个长度为26的数组就足够了。接下来,读取输入文件`word.in`中的单词,遍历这个单词来统计每个字母的出现次数计算出现次数最多和最少的字母的差值,然后编写一个质数判断函数来确定这个差值是否为质数。质数判断可以采用试除法,即从2到sqrt(差值)之间尝试是否能整除差值,如果都不能整除,则该差值为质数。 根据质数判断的结果,你需要输出第一行,如果差值为质数,则输出`'LuckyWord'`(注意首字母大写),否则输出`'NoAnswer'`。第二行输出差值(如果是`'LuckyWord'`的情况下),或者输出0(如果是`'NoAnswer'`的情况下)。 在编写代码时,你需要注意边界条件,例如输入单词为空时应如何处理。此外,为了提高效率,你可以预先定义一个小于100的质数表,这样在判断质数时可以直接查,而无需每次都进行计算。 以下是解题过程中可能遇到的几个关键点: - 如何高效地读取文件输入,并进行处理。 - 如何实现一个快速的质数判断函数。 - 如何在C++中处理字符串和字符数组。 - 如何组织代码结构,确保逻辑清晰且易于理解。 如果你希望更深入地理解这些问题和解题策略,我强烈推荐你查看《NOIP2008:笨小猴的LuckyWord判断》这份资料。它详细解释了类似问题的解题报告,有助于你更好地掌握相关概念,并为编程竞赛做好准备。 参考资源链接:[NOIP2008:笨小猴的LuckyWord判断](https://wenku.youkuaiyun.com/doc/2sd72hobpd?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值