package main.java.demo20;
import java.util.Stack;
/**
* 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
* <p>
* 有效字符串需满足:
* <p>
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
*/
public class IsValid {
/**
* 解题思路: 这题太简单啦, 一个栈就解决啦, 芜湖~~~~~, 芜湖个屁, 忘记最后栈不为空返回false
*
* @param s
* @return
*/
public boolean isValid_1(String s) {
Stack<Character> stack = new Stack<>();
char[] chars = s.toCharArray();
for (char c : chars) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
} else {
char val = stack.pop();
if (c == ')' && val != '(') return false;
if (c == '}' && val != '{') return false;
if (c == ']' && val != '[') return false;
}
}
}
return true;
}
/**
* 妈的笑死我了, 看到一个别人的消消乐解法, 哈哈哈
* 就是效率太低了
*
* @param s
* @return
*/
public boolean isValid_2(String s) {
while (s.contains("()") || s.contains("[]") || s.contains("{}")) {
if (s.contains("()")) {
s = s.replace("()", "");
}
if (s.contains("{}")) {
s = s.replace("{}", "");
}
if (s.contains("[]")) {
s = s.replace("[]", "");
}
}
return s.length() == 0;
}
}
判断括号是否合理
最新推荐文章于 2022-08-04 22:21:08 发布