算法训练营Day11(栈)
2023-12-13 08:11:33
20. 有效的括号
20. 有效的括号 - 力扣(LeetCode)
这道题没看卡哥的视频,我认为我的方法更好一些。
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
char[] ch = s.toCharArray();
for (char c : ch){
if(c=='{'||c=='['||c=='('){
stack.push(c);
//{
}else {
if(!stack.isEmpty()){
if(c=='}'){
if(stack.pop()!='{'){
return false;
}
}
if(c==')'){
if(stack.pop()!='('){
return false;
}
}
if(c==']'){
if(stack.pop()!='['){
return false;
}
}
}else {
return false;
}
}
}
return stack.isEmpty();
}
}
优化
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
char[] ch = s.toCharArray();
for (char c : ch){
if(c=='{'||c=='['||c=='('){
stack.push(c);
continue;
}
if(stack.isEmpty()){
return false;
}
if(c=='}'&&stack.pop()!='{'){
return false;
}
if(c==')'&&stack.pop()!='('){
return false;
}
if(c==']'&&stack.pop()!='['){
return false;
}
}
return stack.isEmpty();
}
}
?
1047.?删除字符串中的所有相邻重复项
1047. Remove All Adjacent Duplicates In String - 力扣(LeetCode)
也是自己写的,二刷再看视频吧,有点简单。
class Solution {
public String removeDuplicates(String s) {
//"abbaca"
Stack<Character> stack = new Stack<>();
char[] ch = s.toCharArray();
for (int i = 0; i < ch.length; i++) {
if(stack.isEmpty()||ch[i]!=stack.peek()){//aa
stack.push(ch[i]);
}else {
stack.pop();
}
//ab
}
String str = "";
//剩余的元素即为不重复的元素
while (!stack.isEmpty()) {
str = stack.pop() + str;
}
return str;
}
}
?150.?逆波兰表达式求值?
这个题看的卡哥视频,就是理解一下逆波兰表达式,就是编译原理的一些东西,也就是二叉树的后续遍历。
class Solution {
public int evalRPN(String[] tokens) {
// 1+2 * 3 4
//12 + 34+ *
//stack:12 3 334 37 21
Stack<Integer> stack = new Stack<>();
for(String s:tokens){
if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")){
int num1 = stack.pop();
int num2 = stack.pop();
if(s.equals("+")){
stack.push(num1+num2);
}else if(s.equals("-")){
stack.push(num2-num1);
}else if(s.equals("*")){
stack.push(num1*num2);
}else if(s.equals("/")){
stack.push(num2/num1);
}
}else {
stack.push(Integer.valueOf(s));
}
}
return stack.pop();
}
}
文章来源:https://blog.csdn.net/weixin_65728526/article/details/134895739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!