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.
比起char类型的操作耗时还是挺明显的
第一种解法,操作String
public class Solution {
public boolean isValid(String s) {
Stack stack = new Stack();
if(s.length()%2!=0)
return false;
for(int i = 0;i<s.length();i++)
{
String str = s.charAt(i)+"";
if(str.equals("{") || str.equals("(")|| str.equals("["))
stack.add(str);
if(str.equals("}") || str.equals("]") || str.equals(")"))
{
if(stack.isEmpty())
return false;
String str1 = stack.pop().toString();
if(!(str1.equals("{") && str.equals("}") || str1.equals("(") && str.equals(")") || str1.equals("[") && str.equals("]")))
return false;
}
}
if(stack.isEmpty())
return true;
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "[[]]";
System.out.println(isValid(str));
}
}耗时:
第二种解法则是对char类型操作
public boolean isValid(String s) {
Stack stack = new Stack();
if(s.length()%2!=0)
return false;
for(int i = 0;i<s.length();i++)
{
char str = s.charAt(i);
if(str=='{' || str=='('|| str=='[')
stack.add(str);
if(str=='}' || str==']' || str==')')
{
if(stack.isEmpty())
return false;
char str1 = stack.pop().toString().charAt(0);
if(!(str1 == '{' && str=='}' || str1 == '(' && str==')' || str1 == '[' && str==']'))
return false;
}
}
if(stack.isEmpty())
return true;
return false;
}耗时明显减少
以后使用java的时候尽量避开一些耗时操作

本文介绍了一种使用栈数据结构来验证括号字符串是否有效的算法,并对比了在Java中使用String与char类型进行操作的性能差异。

1981

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



