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为所定义的栈