(3) 百度2011研发工程师笔试卷
来源:互联网 发布:js点击弹出对话框 编辑:程序博客网 时间:2024/06/02 05:03
1 题目描述
判断一个括号字符串是否匹配正确,如果括号有多种,怎么做?如(([]))正确,[[(()错误。
2 思路
假设左括号为 ({[
右括号为 )}]
采用栈来解决该问题,扫描字符串, 当前符号为左括号时,入栈, 当前符号为右括号时候,出栈, 比较当前符号是否与出栈符号匹配,
如果是,则一直执行扫描字符串,入栈,出栈才操作,当扫描完字符串并且栈为空,则字符串匹配
3 java代码
import java.util.HashMap;import java.util.Map;import java.util.Stack;public class Exam1 { private String left = "({["; // 左括号 private String right = ")}]"; // 右括号 private Stack<Character> stack = new Stack<Character>(); private Map<Character,Character> map = new HashMap<Character,Character>(); { for(int i = 0 ; i < left.length() ; i++){ map.put(left.charAt(i), right.charAt(i)); } } public boolean isMatch(String str){ if(str==null||str.length()==0) return false; boolean isAddInStack = false; for(int i = 0 ; i < str.length() ; i++){ char current = str.charAt(i); if(left.contains(current+"")){ isAddInStack = true; stack.push(current); }else if(right.contains(current+"")){ if(stack.size()>0){ char poll = stack.pop(); if(current!=map.get(poll)){ return false; } } } } if(isAddInStack==true&&stack.size()==0) return true; return false; } public static void main(String args[]){ String str = "()([{[]}])"; Exam1 exam1 = new Exam1(); boolean flag = exam1.isMatch(str); System.out.println(flag); }}
0 0
- (3) 百度2011研发工程师笔试卷
- 百度2011研发工程师笔试卷
- (4) 百度2011研发工程师笔试卷
- (5) 百度2011研发工程师笔试卷
- 百度研发工程师2015深圳笔试卷
- 百度2013研发工程师笔试卷B
- 百度2013研发工程师笔试卷B
- A^B中最后三位(百度2011研发工程师笔试卷)
- 腾讯研发工程师笔试卷
- 腾讯研发工程师笔试卷
- 百度2012研发工程师笔试
- 腾讯研发工程师A笔试卷
- 腾讯研发工程师A笔试卷
- 微软研发工程师笔试卷A
- 小米研发工程师笔试卷A
- 美团2012研发工程师笔试卷
- 微软研发工程师笔试卷B
- 腾讯研发工程师A笔试卷
- 关于vs2015生成软件在不同机器上运行缺少库(dll)
- mysql主从复制(mysql 5.1.73)
- 124. Binary Tree Maximum Path Sum
- Android Studio官方文档之Android Studio创建工程项目篇
- 4.1.6 文件系统基础
- (3) 百度2011研发工程师笔试卷
- [3.2.0]JVM调优原理以及降低Cache操作的内存占比
- “Ubuntu 环境下npm使用时报错 node: not found 的处理方法”
- 关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解
- springmvc 启动错误java.lang.IllegalArgumentException
- JavaScript学习总结(五)原型和原型链详解
- Android利用ViewPager+GridView,实现网格布局(功能列表)并能水平滑动
- matlab-基础 plot输出的图像的线变粗
- hbase 增删改查基本操作