Java Solution (Basic Calculator) ,

这个鸟玩意用了迭代,其实不太好浪费空间,数据多了还容易死,有人用stack还没研究 </br>
昨天代码有错误,num在运算后没有清零,有几个标点错误,在程序中红体,但是昨天date去了这个还是没有测,我肉眼debug的
这个是600mm的还没看明白
https://leetcode.com/discuss/39454/accepted-infix-postfix-based-solution-explaination-600ms
下面是我的半成品,巨傻逼
只能实现这种((()))
不能实现(())+()这种
自己想的判断配对要操作string好多次绝对会卡死
还在想,等我做好了再参考下别人的写个总结

  

public class Solution {
    public int calculate(String s) {
            int  n = s.length();
        int result = 0;
        int num = 0;
        int p = 0;
        int pp = 0 ;
        int L1 = s.indexOf('(');
        int R1 = s.indexOf(')');

        int op = 3;
        int flag  = 0;
        int preflag  = 0;
        if(L1 >= 0 && R1 > 0 ) 
        {
        String b = s.substring(L1+1,R1-1);
        return 
        
        calculate(s.substring(0,L1-1>0?L1-1:0)+    (calculate(b)+" ")+ s.substring(R1+1<n-1?R1+1:n-1,n-1));
        
    
        }
        else 
        {
            for(int i=0 ;i < n ;i++)
            {
                
                

                if(s.charAt(i)=='+')
                op = 1;
                else if (s.charAt(i)=='-')
                op = 2 ;
                else if (s.charAt(i)==' ')
                op = 0;
                else if('0'<=(s.charAt(i))&& (s.charAt(i))<='9')
                op= 3;
                else 
                op = 0;
                    switch(op)
                {
                    case 0 : break;
                    case 1 : pp = p;p = num; num = 0; preflag = flag ;flag = 1;break;
                    case 2 : pp = p;p = num; num = 0; preflag = flag ;flag = 2;break;
                    case 3 : 
                       {
                        num = num*10+(s.charAt(i)-'0');
                        if(preflag==1)
                        p = pp + p;
                        else if(preflag == 2 )
                        p = pp -p ; break;
                       }
                }
            
                
            
            } 
            if(flag==0)
        result = num+p ;
        else     if(flag==1)
            result = p + num ;
            else if(flag == 2)
             result = p -num;
           return result; 
        } 
    }
}

 

转载于:https://www.cnblogs.com/puck/p/4563729.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值