刷题一:单词分析

举报
是Dream呀 发表于 2023/02/14 13:42:47 2023/02/14
【摘要】 刷题一:单词分析

题目描述

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

输入描述
输入一行包含一个单词,单词只由小写英文字母组成。

对于所有的评测用例,输入的单词长度不超过 1000。

输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。

第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。

输入输出样例

示例 1
输入
lanqiao
copy
输出
a
2


示例 2
输入
longlonglongistoolong
copy
输出
o
6

运行限制
最大运行时间:1s
最大运行内存: 256M

解题思路

1.Python解题

刚开始第一种方法,先入为主,直接就找出出现做多次数的字母:

import os
import sys
# 请在此输入您的代码
word = input()  # 定义输入的word
a = 0
b = ''
for i in word:
  c = word.count(i)
  if c >= a:
    a = c
    b = i
print(b)
print(a)

然而忽略了如果有多个字母出现的次数相等,输出字典序最小的那个这个问题,然后就有了下面这一种解法,把得到的最多次数的字母,通过列表存储,经过排序输出字典序最小的字母。

import os
import sys

# 请在此输入您的代码
a = input()
b = []
n = 0
for i in a:
  c = a.count(i)
  if c>=n:
    n=c
for j in a:
  if a.count(j)==n:
    b.append(j)
b.sort()
print(b[0])
print(n)

2.C++解题

# include <iostream>
# include <string>
using namespace std;
int main()
{
//用数组a存储每个小写字母的出现次数
	char a[26] = {0};
	int max=0;
	int index,i;
	string arr;
	cin>>arr;
	int length=arr.length();
	//对字符串中的每个字符进行计数
	for (i = 0;i<length;i++){
		a[arr[i]-97]+=1;
	}
	//找出最大出现次数
	for(i=0;i<26;i++){
		if(a[i]>max){
			max=a[i];
			index=i;
		}
	}
	cout<<char(index+97)<<endl;
	cout<<max<<endl;
	return 0;
 } 
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。