生命无罪,健康万岁,我是laity。
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
LeetCode第20题:有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
时间复杂度: O(n)
class Solution {
public boolean isValid(String s) {
LinkedList<Character> stack = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else {
//获取但不删除栈顶元素 :stack.getFirst() - c 根据ASCII码表
if (stack.size() != 0 && Math.abs(stack.getFirst() - c) <= 2) {
stack.pop();
} else {
return false;
}
}
}
return stack.isEmpty();
}
}
因为有效括号该题使用了栈的思想,所以记录一下怕自己忘记
package laity.linkedList;
import java.util.Stack;
/**
* @author: Laity
* @Project: JavaLaity
* @Package: laity.linkedList.testStack
* @Date: 2022年09月22日 11:42
* @Description: 演示栈 Stack 的基本使用
*
* 特点:先进后出
*/
public class TestStack {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.add("jack");
stack.add("tom");
stack.add("smith");
// 取
while (stack.size() > 0) {
System.out.println(stack.pop()); // pop就是出栈
}
}
}
/**
* @author: Laity
* @Project: JavaLaity
* @Package: LeetCode.t20.IsValid
* @Date: 2022年11月12日 19:35
* @Description: LeetCode第20题:有效的括号
*/
public class IsValid {
public static boolean isValid(String s) {
LinkedList<Character> stack = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else {
//获取但不删除栈顶元素 :stack.getFirst() - c 根据ASCII码表
if (stack.size() != 0 && Math.abs(stack.getFirst() - c) <= 2) {
stack.pop();
} else {
return false;
}
}
}
return stack.isEmpty();
}
public static void main(String[] args) {
String s = "[[[[]]]]";
System.out.println(isValid(s));
}
}
长是一种蜕变,失去了旧的,必然因为又来了新的,这就是公平。我是Laity,正在前行的Laity。