一、力扣
1、基本计算器
224. 基本计算器


class Solution {
public int calculate(String s) {
Deque<Integer> ops = new ArrayDeque<Integer>();
ops.push(1);
int sign = 1;
int ret = 0;
int n = s.length();
int i = 0;
while (i < n) {
if (s.charAt(i) == ' ') {
i++;
} else if (s.charAt(i) == '+') {
sign = ops.peek();
i++;
} else if (s.charAt(i) == '-') {
sign = -ops.peek();
i++;
} else if (s.charAt(i) == '(') {
ops.push(sign);
i++;
} else if (s.charAt(i) == ')') {
ops.pop();
i++;
} else {
long num = 0;
while (i < n && Character.isDigit(s.charAt(i))) {
num = num * 10 + s.charAt(i) - '0';
i++;
}
ret += sign * num;
}
}
return ret;
}
}
2、打印
1. 基础数组打印
int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr));
int[][] matrix = {{1,2}, {3,4}};
System.out.println(Arrays.deepToString(matrix));
2. 集合框架打印
List 打印
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
System.out.println(list);
for (String s : list) {
System.out.print(s + " ");
}
Set 打印
Set<Integer> set = new HashSet<>();
set.add(3);
set.add(1);
set.add(2);
System.out.println(set);
Set<Integer> treeSet = new TreeSet<>(set);
System.out.println(treeSet);
Map 打印
Map<String, Integer> map = new HashMap<>();
map.put("Alice", 25);
map.put("Bob", 30);
System.out.println(map);
Map<String, Integer> treeMap = new TreeMap<>(map);
System.out.println(treeMap);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
ArrayDeque 打印
System.out.println(queue);
System.out.println(new ArrayList<>(deque));
System.out.println(new LinkedList<>(deque));
3、用栈实现队列
232. 用栈实现队列


class MyQueue {
ArrayDeque<Integer> input;
ArrayDeque<Integer> output;
public MyQueue() {
input=new ArrayDeque<>();
output=new ArrayDeque<>();
}
public void push(int x) {
input.push(x);
}
public int pop() {
if(!output.isEmpty()){
return output.poll();
}else{
while(!input.isEmpty()){
output.push(input.poll());
}
return output.poll();
}
}
public int peek() {
if(output.isEmpty()){
while(!input.isEmpty()){
output.push(input.poll());
}
}
return output.peek();
}
public boolean empty() {
return input.isEmpty()&&output.isEmpty();
}
}
4、用队列实现栈
225. 用队列实现栈


class MyStack {
Queue<Integer> queue1;
Queue<Integer> queue2;
public MyStack() {
queue1 = new LinkedList<Integer>();
queue2 = new LinkedList<Integer>();
}
public void push(int x) {
queue2.offer(x);
while (!queue1.isEmpty()) {
queue2.offer(queue1.poll());
}
Queue<Integer> temp = queue1;
queue1 = queue2;
queue2 = temp;
}
public int pop() {
return queue1.poll();
}
public int top() {
return queue1.peek();
}
public boolean empty() {
return queue1.isEmpty();
}
}