作为公司招聘流程之一,我遇到了编码方面的挑战。在该编码挑战中,问题之一是对表达式求逆。 例如, 输入:14-3 * 2/5 输出:5/2 * 3-14
我使用堆栈将每个数字(例如14或3)和表达式放入,然后再次将其弹出以形成输出。
输入格式为:num op num op num op num 因此,我们不必担心输入为-2。 num可以在-10 ^ 16到10 ^ 16之间。我完全在处理字符串,因此即使数字超过10 ^ 16的限制,我的算法也不会有任何问题。
我的算法通过了7个测试用例,但其中2个失败。 我不知道到底是什么情况。我也看不到测试用例。任何想法可能是什么。我知道没有足够的信息,但不幸的是我也没有这些信息。
// Complete the reverse function below.
static String reverse(String expression) {
expression = expression.trim();
if(expression == ""){
return "";
}
Stack<String> stack = new Stack<String>();
String num = "";
for(int i=0; i<expression.length(); i++){
char c = expression.charAt(i);
if(c==' '){
continue;
}
if(c == '+' || c == '-' || c == '*' || c == '/'){
if(num != "") {
stack.push(num);
}
num = "";
stack.push(Character.toString(c));
} else{
num += c;
}
}
if(num != "") {
stack.push(num);
}
String revExp = "";
while(! stack.empty()){
revExp = revExp + stack.pop();
}
return revExp;
}