LeetCode
字符串
1.字符串反转
String str = "hello";
StringBuffer sBuffer = new StringBuffer("hello");
String reverseStr = sBuffer.reverse().toString(); //olleh
2.包含子串
String str1 = "abcdefg";
String str2 = "abc";
str1.contains(str2) //true
Str1.IndexOf(str2) //包含返回对应索引,否则返回-1
数字
1.进制转换
方法一:while循环(自己探索的暴力方法)
String numStr = ""
while(N != 0){
N = N/10;
num = nuStr + String.valueOf(N%10);
}
//输出的是倒序,还要使用翻转
StringBuffer sBuffer = new StringBuffer(num);
num = SBuffer.reverse().toString;
进制转换的api
10进制转r进制 | 函数 | 返回 | |
---|---|---|---|
10进制转2进制 | Integer.toBinaryString(n) | ||
10进制转8进制 | Integer.toOctalString(n); | ||
10进制转16进制 | Integer.toHexString(n); | ||
10进制转r进制 | Integer.toString(100, r); | ||
r进制转10进制
Integer.parase(String num,int radix);
数组
1.数组的复制
优雅的复制
int[] arr = {1,2,3};
int[] arr2 = arr.clone();
int[] arr3 = Array.copys(arr,arr.len);
2.dfs(深度优先遍历)
典型题:小岛面积问题,迷宫问题
int dfs(int r.int c,int grid[][]){
if( r < 0 || c < 0 || r >= grid.length || c >= grid.length ){
return 0 ;
}
if(grid[r][c]==0){
return 0;
}
grid[i][j] = 0; //将遍历过的位置置为0
//递归调用,搜索上下左右
int up = dfs(r-1,c,grid);
int down = dfs(r+1,c,grid);
int left = dfs(r,c+1,grid);
int right = dfs(r,c-1,grid);
return 1 + up + down + left + right ; // 1是加上自身
}