LeetCode常见方法总结

LeetCode

文章目录

  • LeetCode
        • 字符串
          • 1.字符串反转
          • 2.包含子串
        • 数字
          • 1.进制转换
        • 数组
          • 1.数组的复制
          • 2.dfs(深度优先遍历)

字符串

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是加上自身
}

你可能感兴趣的:(Leetcode,算法)