问题来源:《算法(第四版)》习题1.3.9
sample input
1 + 2 ) * 3 - 4 ) * 5 - 6 ) ) )
sample output
( ( 1 + 2 ) * ( ( 3 - 4 ) * ( 5 - 6 ) ) )
思路:遇到“)”以外的字符串都压栈,否则弹栈直到一个完整的表达式形成,两边添加括号后再压栈。
Stack<String> S = new Stack<>();
while(!StdIn.isEmpty()) {
String str = StdIn.readString();
if(str.equals(")")) {
String num2 = S.pop();
String operator = S.pop();
String num1 = S.pop();
S.push("( " + num1 + " " + operator + " " + num2 + " )");
}
else
S.push(str);
}
StdOut.println(S.pop());