您的代码具有O(n)时间复杂度,我认为这对于这个问题来说是最快的。但是您没有利用StringBuilder,而是使用耗时的字符串连接。
这是优化后的版本:
public static void main(String[] args) throws IOException {
BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));
String line = bi.readLine();
String[] input = line.split(" ");
StringBuilder builder = new StringBuilder();
Stack<String> stack = new Stack<String>();
for(String e:input) {
switch(e) {
case("+"):
case("-"):
case("*"):
case("/"):
String i = stack.pop();
String k = stack.pop();
builder.setLength(0);
builder.append("(");
builder.append(k).append(e).append(i);
builder.append(")");
stack.push(builder.toString());
break;
default:
stack.push(e);
}
}
System.out.println(stack.pop());
}
明月笑刀无情
相关分类