2.取末尾数字:lastDigit = x - x / 10 * 10;
result = result * 10 + lastDigit; //采用加的方法,就不会产生001,这种输出了
x /= 10;
3.String to Integer (atoi), Leetcode 解题笔记
这道题要考虑的情况很多,而且很多陷阱,虽然思路不难,但是不容易做对。
要考虑的情况有:
1. 空String
2. 开头的空格
3. 正负符号 陷阱:注意有可能出现”+-356″的情况
4. 最大最小值 陷阱:有可能出现”1000000001″的情况
5. 尾部的非数字字符
判断一个字符是否为数字,可用代码中的方法,判断 ‘0’ <= c <= '9',也可利用Character.isDigit(c)的方法
Integer.MAX_VALUE
4.roman to integer:技巧 背后往前推。遇到I,若>5,则前面遇到V,则-1, 这样就方便许多。
5.以下几题完全不会,要注意:
20 Valid Parentheses 26.6% Easy
19 Remove Nth Node From End of List
21 Merge Two Sorted Lists 其实node就是一个点,node.next就是下一个,不要画弧线。如果没有下一个,那就是null
36.Valid Sudoku
定义哈希函数集:
HashSet<T> xx=new HashSet<T>;
T=Character (注意不是char啊!!!!), String, Integer
for(int k=0;k<9;k++){ //注意每个for循环里面都要有int 申明过变量,所以第一个for里变量使用k。这样 下面就可以套用k了。
5-1 for (int i = k/3*3; i < k/3*3+3; i++) {
30 for (int j = (k%3)*3; j < (k%3)*3+3; j++) {
31 if (board[i][j] == '.')
32 continue; //continue的使用要注意。
注意当k=0,1,2,3---8时,k/3*3 --> 0 0 0 ,3 3 3,6 6 6 。而(k%3)*3 --> 0 3 6 ,0 3 6, 0 3 6.
作为行开头,行 +1,+2,+3. 作为列开头,
0-0 0-3 0-6 每个x-x都可以代表着一个9个数字的方块
3-0 3-3 3-6
6-0 6-3 6-6
上面这个要好好想想。
5)trim()函数,是去除前后所以的空格。
String s=" abc ";
String s2=s.trim();
System.out.print(s2+"---"+s+"---");
输出:abc--- abc ---
6)新函数-split,用法如下:
public int lengthOfLastWord(String s) {
2 String[] a = s.split(" "); //空格是" ",而不是' '.还有遇到转义字符要小心,见下
3 if(a == null || a.length == 0)
4 return 0;
5
6 return a[a.length-1].length();
7 }
如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
7)