题解 - 暴力、枚举、模拟
01 - 单词分析
题目
给了一个单词,找到出现最多的字母和这个字母出现的次数。
样例
longlonglongistoolong
o
6
思路
数组下标具有实际意义:
下标代表字母,元素代表该字母出现的次数
常用ASCII码:A:65 —— a:97 —— 0:48
代码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//输入
String s = sc.next();
//定义一个数组,下标对应的26个字母,元素代表该字母出现次数
int[] z = new int[26];
//定义两个变量保存最大值及下标(字母)
int max = 0, k = 0;
//将单词的每一个字符取出来
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
//每取一个字母,数组对应下标+1
z[c-'a']++;
}
//找到最大值及其下标(字母)
for (int i = 0; i < z.length; i++) {
if (z[i] > max) {
max = z[i];
k = i;
}
}
//整形转化为字符并输出
System.out.println((char) (k + 97) + "\n" + z[k]);
sc.close();
}
02 - 四平方和
题目
对于一个给定的正整数,可能存在多种平方和的表示法。比如:
N = a2+b2+c2+d2
7 = 12+12+12+22
并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法。
样例
12
0 2 2 2
思路
暴力!暴力!暴力破解
枚举所有情况,找到限制条件(N = a2+b2+c2+d2)
最后一定要优化(遍历次数之类的)
代码
public static void main(