這個題目我采用了兩種方案,第一種方案代碼行數相對較少,但效率稍低,第二種方案參照網上的進行改進代碼行數相對多些,但效率稍高。
import java.util.HashMap;
import java.util.Map;
public class Solution {
public boolean isValid(String s) {
Map map=new HashMap();
map.put(']','[');
map.put('}','{');
map.put(')','(');
Stack st=new Stack();
for(int i=0;i
第二種解決方案:
import java.util.HashMap;
import java.util.Map;
public class Solution {
public boolean isValid(String s) {
Stack st = new Stack();
for (int i = 0; i < s.length(); i++) {
Character c = s.charAt(i);
if ((c == ']') || (c == '}') || (c == ')')) {
if (st.empty()) {
return false;
}
Character pre = st.peek();
switch (c) {
case ')':
if (pre == '(') {
st.pop();
} else {
return false;
}
break;
case '}':
if (pre == '{') {
st.pop();
} else {
return false;
}
break;
case ']':
if (pre == '[') {
st.pop();
} else {
return false;
}
break;
}
} else {
st.push(c);
}
}
return st.empty() ? true : false;
}
}