招商银行笔试0408
笔试初体验
- 选择题就是一些基础,问到了网络,java,python,数据库。我的感受是,java和数据库SQL语句占比是比较大的。
- 编程题花了大部分的时间以至于我只留了6分钟做33+5的选做题和问答题。
第一道编程题:回文字符串的判断
1<===>1 ///// 2<===>5 //// 3<===>8 /// 4<===>7 /// 6<===>9
第一行为输入组数,后面每一行一个字符串,输出YES或者NO
输入:
3
69
6996
1111
输出:
YES
NO
YES
第二个编程题:是一个类似于24点的题
先输入行数row,再输入row行“数字+目标”。问,如果在数字之间可以添上加减号,那么使得数字运算后等于目标的添法有几种?
如输入:
2
21 1
12345 3
输出:
1
1
今天犯的错:老想着时间就慌,明明第一行的3对应的是组数,我还当成一组输入,以及 ,没有判断串的长度是偶数还是奇数,如果是奇数,那么最中间的数必须是1才可能回文
另外一个错误是scanner的next和nextLine误用
代码:
import java.util.HashMap;
import java.util.Scanner;
public class ZhaohangHuiwenzifu {
public static void main(String args[]) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
System.out.print("输入组数:");
int T = sc.nextInt();
HashMap<Character,Character> map = new HashMap<>();
map.put('1','1');map.put('2','5');map.put('3','8');map.put('4','7');
map.put('5','2');map.put('6','9');map.put('7','4');map.put('8','3');
map.put('9','6');
while(T>0) {
System.out.print("输入待测字符串:");
String str = sc.next();//此前使用nextLine()会直接拿空串去测
if(new ZhaohangHuiwenzifu().helper(str,map)) {
System.out.println("YES");
}else {
System.out.println("NO");
}
T--;
}
}
public boolean helper(String str,HashMap<Character,Character> map) {
System.out.print("当前字符串是"+str+"结果是");
int len = str.length();
if(len%2 != 0) {
if(str.charAt(len/2)!='1') {
return false;
}
}
for(int i =0;i<len/2;i++) {
char ch1 =str.charAt(i);
char ch2 =str.charAt(len-(i+1));
if(map.get(ch1) != ch2) {
return false;
}
}
return true;
}
} 第二题我用的递归,不知道为啥不对。。。
这题主要用到了递归回溯,要注意的是我理解成单个数字了但其实可以多个数,比如我原本理解是1+2+3但其实可以1+23,所以每一个数字读进来前面可以是+/-/空

360集团公司福利 438人发布