算法-括号匹配
2018-03-28 19:43
183 查看
算法题打卡第一天.
今天这是一个比较入门的题.
其实我觉得这道题最重要的地方就是怎么去考虑这个匹配问题.
我自己开始的思路是找一个左括号再找一个右括号,直到左括号找不到右括号为止.
但是还有一个问题就是如果右括号比较多怎么办.
再加上是算法题,我就好好考虑了一下,觉得应该用栈比较好.
先入先出.如果我遇到了左括号,我就top++,进行入栈操作,进行左括号入栈.如果遇到右括号,我就top–进行出栈操作.最后判断栈里面有没有存值,如果有的话就代表括号不匹配.
但是,如果栈空了右括号一直top– 怎么办.
于是我就考虑查询top的值如果top值为-1,则证明括号匹配,否则就是不匹配. 这样的话,只需要操作top就可以了,不需要再进行进栈出栈了.
代码如下:
这段代码我只在本机上运行正确了,但是因为算法网站的问题(也可能是我自己的问题)没有提交成功,大家参考参考就好.
运行结果:
今天这是一个比较入门的题.
其实我觉得这道题最重要的地方就是怎么去考虑这个匹配问题.
我自己开始的思路是找一个左括号再找一个右括号,直到左括号找不到右括号为止.
但是还有一个问题就是如果右括号比较多怎么办.
再加上是算法题,我就好好考虑了一下,觉得应该用栈比较好.
先入先出.如果我遇到了左括号,我就top++,进行入栈操作,进行左括号入栈.如果遇到右括号,我就top–进行出栈操作.最后判断栈里面有没有存值,如果有的话就代表括号不匹配.
但是,如果栈空了右括号一直top– 怎么办.
于是我就考虑查询top的值如果top值为-1,则证明括号匹配,否则就是不匹配. 这样的话,只需要操作top就可以了,不需要再进行进栈出栈了.
代码如下:
这段代码我只在本机上运行正确了,但是因为算法网站的问题(也可能是我自己的问题)没有提交成功,大家参考参考就好.
import java.util.Scanner; /** * @author lidan@meng_zhu * @date 2018/3/28 0028 17:16 */ public class Stack01 { static class mystack { int []stack; int top=-1; void add(String a) { char b; for(int i=0;i<a.length();i++) { b = a.charAt(i); if(b=='(') top++; if(b==')') top--; } if (top==-1) System.out.println("Yes"); else System.out.println("No"); } } public static void main(String[] args) { String a; Scanner sc = new Scanner(System.in); a=sc.nextLine(); mystack mystack = new mystack(); mystack.add(a); } }
运行结果:
相关文章推荐
- 指针实现的栈(包含进制转换算法实现,括号匹配算法实现)【8】
- 算法:括号匹配(栈的应用)-数据结构(7)
- 括号匹配算法的栈实现
- Longest Valid Parentheses(最长的括号匹配)【面试算法leetcode】
- Lettcode_20_Valid Parentheses——括号匹配算法
- 顺序栈的括号匹配算法
- 使用栈来演示括号匹配的算法
- 笔试面试算法经典--最长括号匹配
- 括号匹配算法的C++代码实现
- 利用栈实现括号匹配算法!
- C语言实现括号匹配,中缀表达式转后缀表达式并计算的算法
- java括号匹配算法
- 顺序栈 & 顺序栈的括号匹配算法
- 常见算法题:判断表达式括号是否匹配
- 数据结构13: 括号匹配算法及C语言实现
- 括号匹配算法
- n对括号可以有多少种匹配排列方式(算法面试题)
- 括号匹配算法
- 括号匹配算法
- 算法学习——栈的应用之括号匹配