2016去哪儿编程题:表达式合法判断
2016-03-30 22:11
447 查看
题目描述
写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)给定一个表达式A,请返回一个bool值,代表它是否合法。测试样例:"[a+b*(5-4)]*{x+b+b*({1+2)}}"
返回:true
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
返回:false 解题 不考虑左右括号是否匹配,不考虑括号内是否由数字,如:2—1+()+{3]*{5) 这样也可以
import java.util.*; public class ChkExpression { public boolean chkLegal(String A) { // write code here Stack<Character> stack = new Stack<Character>(); HashMap<Character,Character> map = new HashMap<Character,Character>(); map.put('[',']'); map.put('{','}'); map.put('(',')'); for(int i =0;i<A.length();i++){ char ch = A.charAt(i); if(map.containsKey(ch)){ stack.push(ch); }else if(map.containsValue(ch)){ if(stack.isEmpty()) return false; char top = stack.peek(); // if(map.get(top).equals(ch)){ stack.pop(); // }else{ // return false; //} } } return stack.isEmpty(); } }上面注释去除测试不过这个题目好奇怪,竟然不需要考虑括号内是否有数字的情况,所有开始我考虑情况比较多,就不知道怎么做了,讨论中就是按照上面写的
相关文章推荐
- mybatis 注解和xml的使用
- PHP中实现页面刷新或跳转的方法
- java大牛list
- java大牛list
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- java 对象this的引用
- Complete Guide to Parameter Tuning in XGBoost (with codes in Python)
- python 中的赋值语句的运用
- Struts2中日期控件
- Python 基础 —— pip 的使用(修改国内源)
- PHP curl报错“Problem (2) in the Chunked-Encoded data”解决方法
- c++第二次实验
- Java-2016.03.30 Spring AOP
- 0330 复利程序c语言版转java版 会逐渐更进版
- Java实现循环链表
- 反编译apk文件教程(查看java代码篇)【新浪云搬运】
- Struts2 datetimepicker 日期月份乱码解决
- c语言调用matlab
- 根据Unicode编码完美的判断中文汉字和符号
- MyBatis报错:There is no getter for property named 'xxx' in 'class java.lang.String'