为了转行程序员而努力的第三十天-栈
2022/1/23 1:05:16
本文主要是介绍为了转行程序员而努力的第三十天-栈,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天又去看了演出,又去聚了餐,还录了声音,也听了网课刷了题,总的来说是比较充实的一天,除了晚上记录的时间剩下比较少。今天刷了两道栈有关的题,感觉其实栈没有链表实现复杂。
今日进度:
1.录了小王子,还录了谚语和英语
2.坚持听网课,刷题
3.坚持锻炼
学习笔记:
1.20. 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
输入:s = “()”
输出:true
解题思路:使用查找表,将右括号对应的左括号存入。遍历数组,遇到左括号时,将左括号放入栈中,遇到右括号,将栈中的头节点取出与查找表中右括号对应的值比较,如果相等,则说明这一个括号满足要求,结束遍历之后,如果stack里有元素,返回false,否则返回true。
class Solution { public boolean isValid(String s) { Map<Character, Character> pairs = new HashMap<Character, Character>(); pairs.put(')', '('); pairs.put(']', '['); pairs.put('}', '{'); Deque<Character> stack = new LinkedList<Character>(); for(int i=0; i<s.length(); i++){ if(pairs.containsKey(s.charAt(i))){ if(stack.peek() != pairs.get(s.charAt(i))){ return false; } else{ stack.pop(); } } else{ stack.push(s.charAt(i)); } } return stack.isEmpty(); } }
2.150. 逆波兰表达式求值
根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
输入:tokens = [“2”,“1”,"+",“3”,"*"]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
解题思路:遍历数组,将数字存入栈,字符串就弹出前两个数字,进行运算符号表示的运算,在放入栈中,继续遍历,直到末尾。栈里只有一个元素,即为表达式的值
class Solution { public int evalRPN(String[] tokens) { Deque<String> stack = new LinkedList<String>(); for(int i=0; i<tokens.length; i++){ if(!(tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("*") || tokens[i].equals("/"))){ stack.push(tokens[i]); } else{ int second = Integer.parseInt(stack.pop()); int first = Integer.parseInt(stack.pop()); String tmp = ""; if(tokens[i].equals("+")){ tmp = String.valueOf(first+second); } if(tokens[i].equals("-")){ tmp = String.valueOf(first-second); } if(tokens[i].equals("*")){ tmp = String.valueOf(first*second); } if(tokens[i].equals("/")){ tmp = String.valueOf(first/second); } stack.push(tmp); } } int res = Integer.parseInt(stack.pop()); return res; } }
明天继续加油刷题,差不多等春节想买一个项目的网课来听,趁春节放假把它做出来。
这篇关于为了转行程序员而努力的第三十天-栈的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新