Algorithm
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
import java.util.Stack;
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '{' || c == '[' || c == '(') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
}
char topChar = stack.pop();
if (c == '}' && topChar != '{') {
return false;
}
if (c == ']' && topChar != '[') {
return false;
}
if (c == ')' && topChar != '(') {
return false;
}
}
}
return stack.isEmpty();
}
}
Review
Tip
關(guān)于選擇
- 面對多個選擇,展望一下各個選擇的最終結(jié)果,在結(jié)果上進行斟酌。
- 明白自己的目標是什么,并確定優(yōu)先級,然后進行選擇
- 目標清晰才能井然有序
- 在發(fā)動汽車前一定要知道自己要往哪里去,還要知道選擇什么途徑去
- 在實現(xiàn)目標的方式上要靈活變通
Share
一般將先存放MSB所在字節(jié)的架構(gòu)稱為大端,將先存放LSB所在字節(jié)的架構(gòu)稱為小端。至于先放置MSB所在字節(jié)還是先放置LSB所在的字節(jié),是由CPU的類型決定的。(近期設(shè)計的CPU有些可以在大端和小端之間切換)。