zoukankan      html  css  js  c++  java
  • 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; 
            } 
        }
    }
  • 相关阅读:
    ceph服务日志分析
    ceph 守护进程管理
    ceph 数据一致性检查(scrub)
    ceph osd坏盘更换
    OSD操作(扩容/缩容/换盘/数据重平衡/数据一致性)
    SharePoint REST API 获取文件夹下的项目数
    SharePoint REST API 设置SummaryLength属性
    庄子逍遥哲学的六个主要思想
    详细解说,无人机构造及原理
    如何写好项目规划和方案设计文档
  • 原文地址:https://www.cnblogs.com/puck/p/4563729.html
Copyright © 2011-2022 走看看