【发布时间】:2018-09-01 16:30:54
【问题描述】:
我正在尝试解决涉及将反向波兰表示法转换为中缀表示法的编程挑战。例如: 1 3 + 2 4 5 - + / 将是:((1+3)/(2+(4-5))) 到目前为止,我的解决方案确实有效,但速度还不够快。所以我正在寻找任何优化建议。
public class betteralgo {
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();
stack.push("(" + k + e + i + ")");
break;
default:
stack.push(e);
}
}
System.out.println(stack.pop());
}
}
【问题讨论】:
-
如果代码有效,这个问题可能更适合代码审查
-
您接受恕我直言的答案提供零加速。
-
您是否考虑过直接解析字符串,而不是使用
line.split?为什么在不使用时分配StringBuilder?StringBuilder在这种情况下不会帮助你。你确定这太慢了吗?你是怎么计时的?
标签: java algorithm optimization infix-notation