码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode解题笔记,basic calculator 1&&basic calculator 2

时间:2015-08-07 01:34:46      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

Basic Calculator1

 题目内容:

实现一个带有加减以及括号功能的小计算器,其中输入的没用负数,而且输入的内容也全部是合法表达式。

个人分析:

1.利用stack解题,将得出的临时结果放入stack中

2.遇到括号的时候将result放入stack中

心得:

1. 对于加减可以直接利用符号进行操作,专门设置一个sign的变量去存这个符号

2.转化字符串中数字固定方法:number = number*10+s.charAt(i)-‘0‘

3. 对于这类需要对中间过程进行记录的可以利用stack来实现,相似的题目有valid pathness(判断合法符号的)

4. 对于符号的控制可以使用pop或者push进行操作。

5. 讲result结果放入栈中应将result结果重新进行赋值result=0;

代码:

public int calculate(String s) {
Stack<Integer> stack = new Stack<Integer>();
int result =0;
int num = 0;
int sign =1;
for(int i=0; i<s.length();i++){
if(Character.isDigit(s.charAt(i))){
num = num*10+s.charAt(i)-‘0‘;
}else if(s.charAt(i)==‘+‘){
result += num*sign;
num =0;
sign =1;
}else if(s.charAt(i)==‘-‘){
result +=num*sign;
num =0;
sign = -1;
}else if(s.charAt(i)==‘(‘){
stack.push(result);
stack.push(sign);
result = 0;
sign =1;
}else if(s.charAt(i)==‘)‘){
result += sign*num;
num =0;
result *= stack.pop();
result += stack.pop();
}
}
if (num !=0 ) result +=sign*num;
return result;
}

Basic calculator2:

1. 与1中不同,将计算结果全部放入栈中最后再进行加和计算

 

 

 

 

Leetcode解题笔记,basic calculator 1&&basic calculator 2

标签:

原文地址:http://www.cnblogs.com/whaochen/p/4709519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!