描述
现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。
-
输入
- 第一行输入一个正整数T(0<T<25)
随后T行输入一个字符串s,s长度小于1010。
输出 - 每组数据输出占一行,输出出现次数最多的字符; 样例输入
-
3 abcd bbaa jsdhfjkshdfjksahdfjkhsajkf
样例输出 -
a a
j
-
方法比较笨,凑合看吧,只是不想用switch case来做,太懒了,代码能少就少吧!import java.util.*; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int k=in.nextInt(); while(k-->0){ int[] cnt=new int[27]; String s=in.next(); String s1="0abcdefghijklmnopqrstuvwxyz"; for (int i = 0; i < s.length(); i++) { for (int j = 1; j < s1.length(); j++) { if(s.charAt(i)==s1.charAt(j)) cnt[j]+=1; } } int pos=1,max=cnt[1]; for (int i = 2; i < cnt.length; i++) { if(cnt[i]>max){ max=cnt[i]; pos=i;} } System.out.println(s1.charAt(pos)); } } }
在此附上最优c程序666:
-
#include<stdio.h> #include<string.h> main() { int x,i,max,q; char a[1011]; scanf("%d",&x); getchar(); while(x--) { int s[26]={0}; gets(a); for(i=strlen(a)-1;i>=0;i--) s[a[i]-97]++; max=0; for(i=0;i<26;i++) if(max<s[i]) max=s[i],q=i; printf("%c\n",q+97); } }