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;
}
};