2232. Minimize Result by Adding Parentheses to Expression

Divide the expression into 4 parts and find each part's value separately and then solve the expression.
A*(B+C)*D;

class Solution {
public:
    string minimizeResult(string expression) {
        int index=-1;
        int n=expression.size();
        for(int i=0;i<expression.size();i++){
            if(expression[i]=='+'){
                index=i;
                break;
            }
        }
        long long int left=stoi(expression.substr(0,index));
        long long int right=stoi(expression.substr(index+1,n-index));
        long long val=left+right;
        string ans='(' + expression + ')';
        
        for(int i=0;i<index;i++){
             int lval=1;
            if(i!=0)lval=stoi(expression.substr(0,i));
            int mlval=stoi(expression.substr(i,index-i));
            
            for(int j=index+1;j<n;j++){
                int rval=1;
                if(j!=n-1)rval=stoi(expression.substr(j+1,n-j));
                int mrval=stoi(expression.substr(index+1,j-index));
                long long cur_val=lval*(mlval+mrval)*rval;
                
                if(cur_val<val){
                    val=cur_val;
                    ans=expression.substr(0,i)+'('+ expression.substr(i,j-i+1)+')'+expression.substr(j+1,n-j);
                }
            }
        }
        return ans;      
        
    }
};
Comments (0)