本题来自蓝桥杯云课题库中的第一题,解决方法可能不是最完美的,仅仅本人个人思路
题目:
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例
示例 1
输入
lanqiaolanqiaolanqiao
输出
a2a 2a 2
示例 2
输入
longlonglongistoolonglonglonglongistoolonglonglonglongistoolong
输出
o6o 6o 6
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
解答过程:
首先写一个输入
Scanner scan = new Scanner(System.in);String a = scan.next();Scanner scan = new Scanner(System.in); String a = scan.next();Scanner scan = new Scanner(System.in); String a = scan.next();
然后在写一个char变量,用于储存每一位的函数的字母
char b;char b;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;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;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++) {}for (int i = 0; i < a.length(); i++) { }for (int i = 0; i < a.length(); i++) { }
接着在根据循环找出字符串每一位的字母并把值赋给b
b = a.charAt(i);System.out.println(b)//可以用于验证,输出每一个b = a.charAt(i); System.out.println(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++;}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++; }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;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;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'};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'};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;int x=0;int x=0;
继续来一个for循环,循环26次或者c的数组元数次
for (int i = 0; i < c.length; i++) {}for (int i = 0; i < c.length; i++) { }for (int i = 0; i < c.length; i++) { }
在判断每一次的大小,大的那个就吧值给x,然后那个e=i就是方便统计第几次是最大的,用于找最大的字母
if (c[i]>x) {x=c[i];e=i;}if (c[i]>x) { x=c[i]; e=i; }if (c[i]>x) { x=c[i]; e=i; }
然后输出结果
System.out.print(d[e]+"\n"+x);System.out.print(d[e]+"\n"+x);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);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);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);
没有回复内容