Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero.
You may assume that the given expression is always valid.
Some examples:
"3+2*2" = 7 " 3/2 " = 1 " 3+5 / 2 " = 5
Note: Do not use the eval built-in library function.
代码如下:(超时)
1 public class Solution { 2 public int calculate(String s) { 3 s=s.replace(" ",""); 4 s=s.replace("+"," + ");s=s.replace("-"," - ");s=s.replace("*"," * ");s=s.replace("/"," / "); 5 String[] ss=s.split(" "); 6 List<Integer> list=new ArrayList<>(); 7 List<String> lists=new ArrayList<>(); 8 9 for(int i=0;i<ss.length;i++) 10 { 11 if(ss[i].equals("+")) 12 lists.add(ss[i]); 13 else if(ss[i].equals("-")) 14 lists.add(ss[i]); 15 else if(ss[i].equals("*")) 16 { 17 int a=list.get(list.size()-1); 18 list.remove(list.size()-1); 19 int b=Integer.valueOf(ss[i+1]); 20 i++; 21 list.add(a*b); 22 } 23 else if(ss[i].equals("/")) 24 { 25 int a=list.get(list.size()-1); 26 list.remove(list.size()-1); 27 int b=Integer.valueOf(ss[i+1]); 28 i++; 29 if(a!=0) 30 list.add(a/b); 31 else 32 list.add(0); 33 } 34 else 35 list.add(Integer.valueOf(ss[i])); 36 } 37 38 while(lists.size()>0) 39 { 40 int a=list.get(0); 41 list.remove(0); 42 int b=list.get(0); 43 44 String c=lists.get(0); 45 lists.remove(0); 46 if(c.equals("+")) 47 list.set(0,a+b); 48 else 49 list.set(0,a-b); 50 } 51 52 return list.get(0); 53 } 54 }
浙公网安备 33010602011771号