0
点赞
收藏
分享

微信扫一扫

[字符串模拟题]leetcode6038:向表达式添加括号后的最小结果(medium)

橙子好吃吗 2022-04-13 阅读 16

题目:
在这里插入图片描述
在这里插入图片描述


题解:


代码如下:

class Solution {
public:
    // 这题不需要写dfs枚举,由于范围较小,只需要双重for枚举即可
    string minimizeResult(string s) {
        int pos=s.find('+'),n=s.size();
        int mx=INT_MAX;
        string res;
        for(int i=0;i<pos;++i){
            // num1总共有pos个数字,a分i个数字,即a=num1[0,i-1];b分pos-i个数字,即b=nums1[i,pos-1]
            string sa=s.substr(0,i),sb=s.substr(i,pos-i);
            int a=sa.size()==0?1:stoi(sa);
            int b=stoi(sb);
            for(int j=pos+1;j<n;++j){
                // num2总共有n-pos-1个数字,c分j-pos个数字,从pos+1到j需要j+1-pos-1=j-pos个数字;d分n-j-1个数字,前面已经用了j+1个数字了,所以后面只能用n-j-1个数字了
                string sc=s.substr(pos+1,j-pos),sd=s.substr(j+1,n-j-1);
                int c=stoi(sc);
                int d=sd.size()==0?1:stoi(sd);
                if(a*(b+c)*d<mx){
                    mx=a*(b+c)*d;
                    res=sa+"("+sb+"+"+sc+")"+sd;
                }
            }
        }
        return res;
    }
};
举报

相关推荐

0 条评论