题解 | #四则运算#

四则运算

https://www.nowcoder.com/practice/9999764a61484d819056f807d2a91f1e

第一种方法较为巧妙,发现eval除了不能识别{}之外,()和[]都能够按照正常运算规则识别,所以第一种方法巧妙地将{}replace为()或者[],则可得到答案。
第二种方法则较为原始,一步一步去除括号再运算,两种方法源代码均放在下面,希望有帮助;
let line
while(line=readline()) {
    line = line.replace('{','(').replace('}',')')
    console.log(eval(line))
}
//以上是较为巧妙的方法,以下是原始方法;
let line = readline();
let str1 = '';
let str2 = '';
let str3 = '';
let reg1 = /\(.+\)/g;
let reg2 = /\[.+\]/g;
let reg3 = /\{.+\}/g;
if (line.match(reg1)) {
    str1 = line.replace(reg1, evalFunc);
    if (str1.match(reg2)) {
    str2 = str1.replace(reg2, evalFunc);
        if (str2.match(reg3)) {
        str3 = str2.replace(reg3, evalFunc);
        console.log(eval(str3));
        }
        else {
            console.log(eval(str2));
        }
    }
    else {
        console.log(eval(str1));
    }
}
else {
    console.log(eval(line));
}
function evalFunc(str) {
    return eval(str);
}



全部评论

相关推荐

10-17 09:06
门头沟学院 Java
8527睿:有些地方感觉不太契合实际啊。简单看看第二个项目那里。 比如canal流式读取数据库日志进行缓存同步那里。可不可以加个消息中间件来确保SQL语句的削峰填谷。一般都是canal+消息中间件 双层鉴权登录那里,描述有点模糊,登录是鉴权的前提唉,后面功能都在说是登录,鉴权没有啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务