Leetcode刷題中關於java的一些小問題

Rosso_發表於2018-11-18

1.java 中一些經典資料結構的寫法:

Java Stack 類

棧是Vector的一個子類,它實現了一個標準的後進先出的棧。

EG:

import java.util.*;

Stack<Integer> st = new Stack<Integer>();

佇列:

Queue<String> queue = new LinkedList<String>();

 

2.將String和int型

*int轉String:String.valueOf(int);

*String轉int:

parseInt() 方法用於將字串引數作為有符號的十進位制整數進行解析。

EG:

int x =Integer.parseInt("9");

 

3.對字串做處理時善用字串內建函式及正規表示式

EG: 

String.trim()       String.split()

String與list結合:String.join(list);

*當分隔符是句號時("."),需要轉義:"\\*"

 

4.List翻轉:Collections.reverse();

翻轉陣列的話可以先轉為Aarray再用上函式(Arrays.asList())

 

5. int的範圍是-2147483648~2147483647所以當對數字處理相關的題目時,取絕對值時應先轉成long型

EG:

且應寫成:

 long a=aa
 p=Math.abs(a);
 long b=bb
 q=Math.abs(b);

寫成如下,會出錯:

 long p=Math.abs(a);
 long q=Math.abs(b);

 

6.有時可以將問題抽象成一個特別的排序問題,然後通過重寫sort方法的compartor來實現(leetcode179)

 

7.字串轉char型陣列

char[] s = word.toCharArray();

8.陣列擷取:

將陣列a的前5個複製到b,將a1的後4個複製到b,組合成新陣列b:

-------------------------------------------------------------------------------------------------------------------

int[] a = {2,2,2,2,2,0,0,0,0}; 

int[] a1 = {0,0,0,0,0,1,1,1,1}; 
int[] b=new int[9];      
//引數:陣列源,拷貝的起始下標,目標陣列,填寫的起始下標,拷貝的長度)
System.arraycopy(a, 0, b, 0, 5);
System.arraycopy(a1, 5, b, 5, 4);
for(int i=0;i<b.length;i++){
System.out.print(b[i]);
}

-------------------------------------------------------------------------------------------------------------------

輸出:222221111

9.treeset的使用

treeset是基於紅黑樹構建的,可利用其特性進行快速搜尋(220. Contains Duplicate III)

public SortedSet<E> subSet(E fromElement,E toElement)
  • fromElement-- 這是返回集合的低端點(包括)。

  • toElement-- 這是返回集合的高點(不包括)。

10.遇到數字過大問題是把int都轉成long

11.Character.isDigit() 判斷字元是否為數字

12.遍歷棧:

for (int i : stack) {
        res += i;
    }

其中 stack為所定義的棧

相關文章