单词分析-蓝桥杯真题-易-Java板块造梦空间论坛-技术交流-造梦空间论坛

单词分析-蓝桥杯真题-易

本题来自蓝桥杯云课题库中的第一题,解决方法可能不是最完美的,仅仅本人个人思路

点我直达

题目:

题目描述

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

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

输入描述

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

对于所有的评测用例,输入的单词长度不超过 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);
请登录后发表评论

    没有回复内容

© 造梦空间论坛