後置演算(Postfix):Stack
14317 ワード
説明する。
function solution(s) {
let stack = [];
for (let x of s) {
if (Number.isInteger(Number(x))) stack.push(x);
else {
let b = stack.pop();
let a = stack.pop();
let result = eval(a + x + b);
stack.push(result.toString());
}
}
const answer = Number(stack[0]);
return answer;
}
let str = '352+*9-';
console.log(solution(str));
eval
を使用して文字列で説明してみます説明する。
function solution(s) {
let stack = [];
for (let x of s) {
if (Number.isInteger(Number(x))) stack.push(Number(x));
else {
let b = stack.pop();
let a = stack.pop();
let result;
switch (x) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
}
}
}
const answer = Number(stack[0]);
return answer;
}
let str = '352+*9-';
console.log(solution(str));
eval
はできるだけWeb上で使用しないようにするため、switch 문
として実現される.に答える
function solution(s) {
let answer;
let stack = [];
for (let x of s) {
if (!isNaN(x)) stack.push(Number(x));
else {
let rt = stack.pop();
let lt = stack.pop();
if (x === '+') stack.push(lt + rt);
else if (x === '-') stack.push(lt - rt);
else if (x === '*') stack.push(lt * rt);
else if (x === '/') stack.push(lt / rt);
}
}
answer = stack[0];
return answer;
}
let str = '352+*9-';
console.log(solution(str));
淡々とif 문
で解けたようです.学識
数字
if(Number.isInteger(Number(x))
if(!isNaN(x))
Reference
この問題について(後置演算(Postfix):Stack), 我々は、より多くの情報をここで見つけました https://velog.io/@frenchkebab/후위식-연산Postfix-Stackテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol