本题来自蓝桥杯云课题库中的第一题,解决方法可能不是最完美的,仅仅本人个人思路
题目:
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例
示例 1
输入
lanqiao
输出
a
2
示例 2
输入
longlonglongistoolong
输出
o
6
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
解答过程:
首先写一个输入
Scanner scan = new Scanner(System.in);
String a = scan.next();
然后在写一个char变量,用于储存每一位的函数的字母
char b;
在创建一些a-z的一些变量用于统计输入的字符数量
int aa = 0, bb = 0, cc = 0, dd = 0, ee = 0, ff = 0, gg = 0, hh = 00, ii = 0, jj = 0, kk = 0, ll = 0, mm = 0,
nn = 0, oo = 0, pp = 0, qq = 0, rr = 0, ss = 0, tt = 0, uu = 0, vv = 00, ww = 0, xx = 0, yy = 0, zz = 0;
在写个for循环循环a的长度是多少次就循环多少次(length可以获取字符串长度)
for (int i = 0; i < a.length(); i++) {
}
接着在根据循环找出字符串每一位的字母并把值赋给b
b = a.charAt(i);
System.out.println(b)//可以用于验证,输出每一个
然后在循环内判断,判断b是不是等于a-z(建议用switch,刚刚写的时候一下子给忘记了)
if (b == 'a') {
aa++;
}
if (b == 'b') {
bb++;
}
if (b == 'c') {
cc++;
}
if (b == 'd') {
dd++;
}
if (b == 'e') {
ee++;
}
if (b == 'f') {
ff++;
}
if (b == 'g') {
gg++;
}
if (b == 'h') {
hh++;
}
if (b == 'i') {
ii++;
}
if (b == 'j') {
jj++;
}
if (b == 'k') {
kk++;
}
if (b == 'l') {
ll++;
}
if (b == 'm') {
mm++;
}
if (b == 'n') {
nn++;
}
if (b == 'o') {
oo++;
}
if (b == 'p') {
pp++;
}
if (b == 'q') {
qq++;
}
if (b == 'r') {
rr++;
}
if (b == 's') {
ss++;
}
if (b == 't') {
tt++;
}
if (b == 'u') {
uu++;
}
if (b == 'v') {
vv++;
}
if (b == 'w') {
ww++;
}
if (b == 'x') {
xx++;
}
if (b == 'y') {
yy++;
}
if (b == 'z') {
zz++;
}
接着在吧a-z的出现次数写到数组里面,方便比较
int c[] = { aa, bb, cc, dd, ee, ff, gg, hh, ii, jj, kk, ll, mm, nn, oo, pp, qq, ii, ss, tt, uu, vv, ww, xx, yy,
zz},e = 0;
那个e=0是后面用于看在第几个值是最大,然后方便判断是哪个字母最大,然后在写一个数组存储a-z
char d[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
在建一个整数x=0储存最大的是多少
int x=0;
继续来一个for循环,循环26次或者c的数组元数次
for (int i = 0; i < c.length; i++) {
}
在判断每一次的大小,大的那个就吧值给x,然后那个e=i就是方便统计第几次是最大的,用于找最大的字母
if (c[i]>x) {
x=c[i];
e=i;
}
然后输出结果
System.out.print(d[e]+"\n"+x);
全源码:
Scanner scan = new Scanner(System.in);
String a = scan.next();
char b;
int aa = 0, bb = 0, cc = 0, dd = 0, ee = 0, ff = 0, gg = 0, hh = 00, ii = 0, jj = 0, kk = 0, ll = 0, mm = 0,
nn = 0, oo = 0, pp = 0, qq = 0, rr = 0, ss = 0, tt = 0, uu = 0, vv = 00, ww = 0, xx = 0, yy = 0, zz = 0;
// System.out.println(a.length());//获取输入长度
for (int i = 0; i < a.length(); i++) {
b = a.charAt(i);
// System.out.println(b)//输出每一个
if (b == 'a') {
aa++;
}
if (b == 'b') {
bb++;
}
if (b == 'c') {
cc++;
}
if (b == 'd') {
dd++;
}
if (b == 'e') {
ee++;
}
if (b == 'f') {
ff++;
}
if (b == 'g') {
gg++;
}
if (b == 'h') {
hh++;
}
if (b == 'i') {
ii++;
}
if (b == 'j') {
jj++;
}
if (b == 'k') {
kk++;
}
if (b == 'l') {
ll++;
}
if (b == 'm') {
mm++;
}
if (b == 'n') {
nn++;
}
if (b == 'o') {
oo++;
}
if (b == 'p') {
pp++;
}
if (b == 'q') {
qq++;
}
if (b == 'r') {
rr++;
}
if (b == 's') {
ss++;
}
if (b == 't') {
tt++;
}
if (b == 'u') {
uu++;
}
if (b == 'v') {
vv++;
}
if (b == 'w') {
ww++;
}
if (b == 'x') {
xx++;
}
if (b == 'y') {
yy++;
}
if (b == 'z') {
zz++;
}
}
int c[] = { aa, bb, cc, dd, ee, ff, gg, hh, ii, jj, kk, ll, mm, nn, oo, pp, qq, ii, ss, tt, uu, vv, ww, xx, yy,
zz},e = 0;
char d[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int x=0;
for (int i = 0; i < c.length; i++) {
if (c[i]>x) {
x=c[i];
e=i;
}
}
System.out.print(d[e]+"\n"+x);
没有回复内容