第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

前端面試的一道算法題

前端面試的一道算法題

ITMISS 2018-07-31 12:13:21
今天,下午有一個面試,二面的時候有道算法題,我對算法一竅不通,求大神解惑題目是 實現(xiàn)計算加減乘除括號運(yùn)算的函數(shù) 輸入字符串 類似 (1+2)/4+5+(3+5)*3 類似的合法運(yùn)算能不能稍微講解下大體思路是什么?面試大哥當(dāng)時語重心長的說了聲這是算法題,我想不應(yīng)該是eval()這種實現(xiàn)吧?
查看完整描述

3 回答

?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊

eval是個辦法,但比較不規(guī)范,大多數(shù)情況下不要用。

這題的正規(guī)加法二叉樹運(yùn)算四則表達(dá)式


查看完整回答
反對 回復(fù) 2018-08-04
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗 獲得超10個贊

用調(diào)度場算法把中綴表達(dá)式改后綴表達(dá)式(逆波蘭表達(dá)式)

var A = '((112 + 2) * (32 + (43 + 45 - 46) * 12))';


function is_op(val) {

    var op_string = '+-*/()';

    return op_string.indexOf(val) > -1;

}


function init_expression(expression) {

    var expression = expression.replace(/\s/g, ''),

        input_stack = [];

    input_stack.push(expression[0]);

    for (var i = 1; l = expression.length, i<l; i++) {

        if (is_op(expression[i]) || is_op(input_stack.slice(-1))) {

            input_stack.push(expression[i]);

        } else {

            input_stack.push(input_stack.pop()+expression[i]);

        }

    }

    return input_stack;

}


function op_level (op) {

    if (op == '+' || op == '-') {

        return 0;

    }

    if (op == '*' || op == '/') {

        return 1;

    }

    if (op == '(') {

        return 3;

    }

    if (op == ')') {

        return 4;

    }

}


function RPN (input_stack) {

    var out_stack = [], op_stack = [], match = false, tmp_op;

    while (input_stack.length > 0 ) {

        var sign = input_stack.shift();

        if (!is_op(sign)) {

            out_stack.push(sign);

        } else if (op_level(sign) == 4) {

            match = false;

            while (op_stack.length > 0 ) {

                tmp_op = op_stack.pop();

                if ( tmp_op == '(') {

                    match = true;

                    break;

                } else {

                    out_stack.push(tmp_op);

                }

            } 

            if (match == false) {

                return 'lack left';

            }

        } else {

            while ( op_stack.length > 0 && op_stack.slice(-1) != '(' && op_level(sign) <= op_level(op_stack.slice(-1))) {

                out_stack.push(op_stack.pop());

            }

            op_stack.push(sign);   

        }

    }

    while (op_stack.length > 0 ){

        var tmp_op = op_stack.pop();

        if (tmp_op != '(') {

            out_stack.push(tmp_op);

        } else {

            return 'lack right';

        }

    }

    return out_stack;

}


function cal(expression) {

    var i, j, 

        RPN_exp = [],

        ans;

    while (expression.length > 0) {

        var sign = expression.shift();

        if (!is_op(sign)) {

            RPN_exp.push(sign);

        } else {

            j = parseFloat(RPN_exp.pop());

            i = parseFloat(RPN_exp.pop());

            RPN_exp.push(cal_two(i, j, sign));

        }

    }

    return RPN_exp[0];

}


function cal_two(i, j, sign) {

    switch (sign) {

        case '+':

            return i + j;

            break;

        case '-':

            return i - j;

            break;

        case '*':

            return i * j;

            break;

        case '/':

            return i / j;

            break;

        default:

            return false;

    }

}



var expression = RPN(init_expression(A))

if (expression == 'lack left' || expression == 'lack right') {

    console.log(expression);

} else {

    console.log(cal(expression));

}


查看完整回答
反對 回復(fù) 2018-08-04
  • 3 回答
  • 0 關(guān)注
  • 1238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號