逆波兰表达式
答案:
evaluate(x.substring(1+v1[1]));
思路:
递归要利用整体的思维
v1处理不完的由v2处理
package java_2013_A;
public class Main006_逆波兰表达式 {
public static void main(String[] args) {
String s = "-+3*5+261";
int[] t = evaluate(s);
for (int i : t) {
System.out.println(i);
}
}
static int[] evaluate(String x){
if(x.length()==0) return new int[] {0,0};
char c = x.charAt(0);
if(c>='0' && c<='9') return new int[] {c-'0',1};
int[] v1 = evaluate(x.substring(1));
int[] v2 = evaluate(x.substring(1+v1[1]));
int v = Integer.MAX_VALUE;
if(c=='+') v = v1[0] + v2[0];
if(c=='*') v = v1[0] * v2[0];
if(c=='-') v = v1[0] - v2[0];
return new int[] {v,1+v1[1]+v2[1]};
}
}