寻找字符串中出现最多的字母,输出数量以及字母(Java)

您所在的位置:网站首页 字母数量最多的英文单词是什么 寻找字符串中出现最多的字母,输出数量以及字母(Java)

寻找字符串中出现最多的字母,输出数量以及字母(Java)

2023-08-27 03:07| 来源: 网络整理| 查看: 265

该问题比较经典,在蓝桥杯2020年的第七题位置出现过。

该文章的解题思路是将字符串化为ASCII码对应的整形数组,排序后寻找相邻且相同数目最多的数字。代码注释比较完善,直接看代码。(代码中部分代码是为了优化显示或者写程序时为了找错写的,可以省略。)

import java.util.Arrays; import java.util.Scanner; /** * @author wanhailin * @creat 2022-04-05-14:57 */ public class lanqiao_2020_7 { public static void main(String[] args) { //从键盘输入一个字符串(单词) Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); int n = s.length();//获取字符串长度 //把字符串转化为char数组,再转化成为一个ASCII码对应的整形数组 int[] arr1 = new int[n]; char[] arr2 = new char[n]; for (int i = 0; i < n; i++) { arr2[i] = s.charAt(i); } for (int i = 0; i < n; i++) { arr1[i] = (int) arr2[i]; } //给转化的整形数组排序,方便查找数量最多的字母对应的ASCII码 Arrays.sort(arr1); //输出了一下这个单词,这部分可以不要 for (int i: arr1) { System.out.print((char)i); } System.out.println();//换行,显示好看 int max = 0;//最多字母的数量 int recent_max = 1;//正在扫描的“最长情况”,暂时记录器 int result = 0;//所对应的字母 int recent_result=0;//暂时记录器 for (int i = 0; i + 1 < n; i++) { //发现重复的,临时值+1,并且保存该字母对应的ASCII码 if (arr1[i] == arr1[i + 1]) { recent_max++; recent_result = arr1[i]; } //当重复段结束,即遇到不相同的,或者说遍历到了最后,防止全部是一个字母的情况 if (arr1[i] != arr1[i + 1]||i == (n - 2)) { if (recent_max > max) {//大于当前最优情况,更改最优情况 max = recent_max; result =recent_result ; } recent_max=1; recent_result=0; } } System.out.println("最多的数量为" + max); System.out.println("对应的字母为:" + (char)result); } }

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3