试题A:星期计算
先求第一个余数
再求第二个余数
故,星期6过一天是星期天
试题B:山
此题通过全部进行一遍遍历可以得到结果3138
用了两个函数 :
(1)isHuiWen(int str) : 用来查看他是不是回文数,以下是回文数的例子
我们通过字符串 str 与 str的反转 进行比较,就能确定第一步,他是回文数,用到了StringBuff
是回文数就会返回true
(2)Up(int str) : 判断他前一半的数字是否是单调递增的,如果是就返回true
(3)通过两个函数的判断,就可以知道他是不是" 山 "
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int ans = 0;
for(int i=2020;i<=2022222022;i++){
if(isHuiWen(i) && Up(i)){
//System.out.println(i);
ans++;
}
}
System.out.println(ans);
scan.close();
}
//str是不是回文数
public static boolean isHuiWen(int str){
StringBuffer str1 = new StringBuffer(str+"");
//用str 比较 str的逆序
if(str1.toString().equals(str1.reverse().toString())){
return true;
}
return false;
}
//str的前一半是否是单调递增
public static boolean Up(int str){
String st=str+"";
//三目运算符判断是单数还是双数
int len=st.length()%2==0 ? st.length()/2 : st.length()/2+1;
for(int i=1;i<len;i++) {
if(st.charAt(i)<st.charAt(i-1)) {
return false;
}
}
return true;
}
试题C:字符统计
(1)用arrs[26]用来存储A~Z,26个字母对应的个数,A对应下标0,出现一次就对arrs[字母]++;
用Max记录当前字母出现次数最大值;
ans为当前出现最大值的——字母的字符串,如果当前的下标的字母出现次数和Max相等,就 一起加入ans(ans = B + A)两个字符串拼接起来了;
(2)但是这样拼接的字符串顺序不是ABCD,可能乱序;(B比A先出现)
故重现遍历一遍arrs[]数组,找到下标等于Max的字母,让其按顺序拼接到result上;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
//char A = 65,arrs[26]用来存储A~Z 26个字母对应的个数,A对应下标0,出现一次就对arrs[字母]++
int[] arrs = new int[26];
//temp 用于交换数据;Max用于保存当前出现最多字母的个数,EG:BBCABAC——AB都出现了3次
int temp = 0,Max = 0;
//ans 用于保存顺序扫描过去,出现最多次数字母的 字符串组 EG:BA(B比A先出现)
String ans = "";
for(int i=0;i<str.length();i++){
//由于A的ASCII是65,故str.charAt(i)-65=0 =>arrs[0]自增
temp = ++arrs[str.charAt(i)-65];
//如果当前下标的字母出现次数没有Max大就continues;如果大于Max就取代ans,并让Max更新;
//如果当前的下标的字母出现次数和Max相等,就一起加入ans(ans = B + A)两个字符串拼接起来了
if(temp<Max){
continue;
}else if(temp>Max){
Max = temp;
ans = str.charAt(i)+"";
}else{
ans=ans+str.charAt(i);
}
}
//但是会出现BA顺序相反的情况,故重现遍历一遍arrs[26]数组,找到下标等于Max的字母,让其拼接到result上
String result = "";
for (int i = 0; i < 26; i++) {
if(arrs[i]==Max) {
result = result + (char) (i + 65);
}
}
System.out.println(result);
scan.close();
}