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é)果上進(jìn)行斟酌。
- 明白自己的目標(biāo)是什么锌介,并確定優(yōu)先級嗜诀,然后進(jìn)行選擇
- 目標(biāo)清晰才能井然有序
- 在發(fā)動汽車前一定要知道自己要往哪里去猾警,還要知道選擇什么途徑去
- 在實現(xiàn)目標(biāo)的方式上要靈活變通
Share
一般將先存放MSB所在字節(jié)的架構(gòu)稱為大端,將先存放LSB所在字節(jié)的架構(gòu)稱為小端隆敢。至于先放置MSB所在字節(jié)還是先放置LSB所在的字節(jié)发皿,是由CPU的類型決定的。(近期設(shè)計的CPU有些可以在大端和小端之間切換)拂蝎。