1、多行的输入输出
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();//以空格和回车区别的数
String s = sc.nextLine();//或得一行的内容
因为好久没有接触基本的输入输出了,导致今天做的好多题都没有做出来,以及导致做题速度低。
2、栈的操作
(+ a b) 遇到这种题一般都会想到运用栈,但是脑海里想到的还是之前数据结构,用c++自己实现栈的操作,没有想到直接用Java里的数据结构,LinkList就可以实现对栈的操作。
栈的操作参考如下:
class Solution {
public boolean isValid(String s) {
int len = s.length();
if (len % 2 == 1) {
return false;
}
Map<Character, Character> map = new HashMap<>();
map.put('}', '{');
map.put(']', '[');
map.put(')', '(');
Deque<Character> stack = new LinkedList<Character>();
for (int i = 0; i < len; i++) {
char ch = s.charAt(i);
if (map.containsValue(ch)) {
stack.push(ch);
} else {
if (stack.isEmpty() || stack.peek() != map.get(ch)){
return false;
}else
stack.pop();
}
}
return stack.isEmpty();
}
}
3、三维数组的操作
脑子里一直在想二维数组的赋值,但是某一刻也想到用new int[][]二维数组,再赋值到三维数组中,奈何还是自己做的太慢,没有时间尝试又到时间了。
/**
* 三维数组
* @author Administrator
*
*/
public class DemoArraysThred {
public static void main(String arg[]) {
/*三维数组*/
int[][][] arr = new int[3][][];
arr[0] = new int[3][];
arr[0][0] = new int[2];
arr[0][0][0] = 1111;
arr[0][0][1] = 1112;
arr[0][1] = new int[2];
arr[0][1][0] = 1121;
arr[0][1][1] = 1122;
arr[0][2] = new int[3];
arr[0][2][0] = 1131;
arr[0][2][1] = 1132;
arr[0][2][2] = 1133;
arr[1] = new int[3][];
arr[1][0] = new int[2];
arr[1][0][0] = 1211;
arr[1][0][1] = 1212;
arr[1][1] = new int[2];
arr[1][1][0] = 1221;
arr[1][1][1] = 1222;
arr[1][2] = new int[2];
arr[1][2][0] = 1231;
arr[1][2][1] = 1232;
arr[2] = new int[3][];
arr[2][0] = new int[2];
arr[2][0][0] = 1311;
arr[2][0][1] = 1312;
arr[2][1] = new int[2];
arr[2][1][0] = 1321;
arr[2][1][1] = 1322;
arr[2][2] = new int[2];
arr[2][2][0] = 1331;
arr[2][2][1] = 1332;
for (int[][] a2 : arr) {
for (int[] a1 : a2) {
for (int a: a1) {
System.out.print(a + "\t");
}
System.out.println();
}
}
}
}