题目:
Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
就是说要判断内容为”{“,”}”,”[“,”]”,”(“,”)”的字符串,是否一一对应,有开始有结束。
代码
1.个人思路
/**我优化几遍后的代码
* 最短用时:8ms
* beats:93.67%
*/
public boolean isValid1(String s) {
if(s.length()%2!=0||s.length()==0){return false;}
Stack<Character> stack = new Stack<Character>();
for(char c:s.toCharArray()){
if(c=='('||c=='{'||c=='['){stack.push(c);}
else if(stack.isEmpty()){return false;}
else if(c==']'){if(stack.peek()!='['){return false;}stack.pop();}
else if(c==')'){if(stack.peek()!='('){return false;}stack.pop();}
else if(c=='}'){if(stack.peek()!='{'){return false;}stack.pop();}
}
return stack.isEmpty();
}
2.网上大神思路
/**
* 网上大神思路
* 用时:10ms
* beats:65.31%
*/
public boolean isValid2(String s){
Stack<Character> stack = new Stack<Character>();
for(char c:s.toCharArray()){
if(c=='('){stack.push(')');}
else if(c=='{'){stack.push('}');}
else if(c=='['){stack.push(']');}
else if(stack.isEmpty()||stack.pop()!=c){return false;}
}
return stack.isEmpty();
}
本文介绍了一种使用栈数据结构来验证包含括号的字符串是否有效的方法。提供了两种高效的实现方式,一种通过直接压入左括号,另一种则通过压入对应的右括号,并在遇到右括号时进行匹配检查。
894

被折叠的 条评论
为什么被折叠?



