您的位置:首页 > 其它

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

2015-08-06 23:46 351 查看

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中不同,将计算结果全部放入栈中最后再进行加和计算
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: