蓝桥杯注意事项和常错基本知识
遇到填空题,只需要填写一个数字。像回文数字,用暴力解题法,自己想或者借助计算机用眼睛看出来,写多不得分。
‘B’ - ‘A’ = 1
遇到长数字要翻转的,要用/10方法,不能用string,因为会溢出。
遇到字符串计数的,可以用固定分配28个空间的字符数组,分别计算。
char[] chs = scanner.nextLine().toCharArray();
counts[chs[i] - ‘A’] += 1;Arrays.sort(int[] a)
这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。Arrays.sort(int[] a, int fromIndex, int toIndex)
这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序。10进制转16进制:System.out.printf(“%X”, n);
16进制转10进制 :
String string = scanner.nextLine();
System.out.print(Long.valueOf(string,16));
int x=Integer.parseInt(str,16);输入的是不带0x表示的十六进制数,直接转换即可
int x=Integer.parseInt(str.substring(2),16);输入的是带有0x标识的十六进制数,需要截去前面两位标识
Math.pow(底数,几次方)
char(int):根据ascii码取得其对应的字符
Integer.toBinaryString(int i):返回int变量的二进制表示的字符串。
toString() : 把对象转成字符串
String str [] = s.nextLine().trim().split(" ");//把输入的字符串去掉首尾的空格后以" "为条件分割成一个String数组。
用Date时要注意时区问题,我们是东8区,一开始是1900-01-01 8:00:00所有要减去8个小时的毫秒数
long n = sc.nextLong(); n-=8*3600*1000; Date date = new Date(n); SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); System.out.println(format.format(date));
将ASCII码转为大写字母 int i = ‘A’+1; //66
char res = (char)i; //B
考察内容
计算机算法:
枚举、排序、搜索、计数、贪心、动态规划、图论、数论、博弈论*、概率论*、计算几何*、字符串算法等。
数据结构:
数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树、复杂数据结构*、嵌套数据结构*等
考试时注意
Java 选手请务必不要使用 package 语句,并且确保自己的主类名称为 Main,否则会导
致评测系统运行时找不到主类而得 0 分。
Java 选手如果程序中引用了类库,在提交时必须将 import 语句与程序的
其他部分同时提交。只允许使用 Java 自带的类库。
字符
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
这里是26为一个循环,可以想象成是26进制的数。
最后检查字符串的顺序是否正确
Character character = (char) (‘A’ + 28 % 26); 答案为C
public String convertToTitle(int columnNumber) {
StringBuffer sb = new StringBuffer();
while (columnNumber != 0) {
columnNumber--;
sb.append((char)(columnNumber % 26 + 'A'));
columnNumber /= 26;
}
return sb.reverse().toString();
}
另一种简洁的写法
public String convertToTitle(int columnNumber) {
return columnNumber == 0 ? "" : convertToTitle(--columnNumber / 26) + (char)('A' + (columnNumber %