6037. 按奇偶性交换后的最大数字
class Solution {
public:
int largestInteger(int num) {
int n=0;
int cal=num;
vector<int>count;
int res=0;
while(cal>0)
{
n++;
count.insert(count.begin(),cal%10);
cal/=10;
}
for(int i=0;i<n-1;i++)
{
int maxx=count[i];
int swi=i;
for(int j=i+1;j<n;j++)
{
if(count[i]%2==count[j]%2&&count[j]>maxx)
{
maxx=count[j];
swi=j;
}
}
int temp=count[i];
count[i]=maxx;
count[swi]=temp;
}
for(int i=0;i<n;i++)
{
res+=count[i];
if(i==n-1)
break;
res*=10;
}
return res;
}
};
数据量不大,遍历就行了
6038. 向表达式添加括号后的最小结果
class Solution {
public:
string minimizeResult(string expression) {
int n=expression.length();
int plus=-1;
int maxx=2147483647;
string res;
for(int i=0;i<n;i++)
{
if(expression[i]=='+')
plus=i;
}
for(int i=0;i<plus;i++)
{
for(int j=plus+1;j<n;j++)
{
int left=(i==0) ? 1:stoi(expression.substr(0,i));
int right=(j==n-1) ? 1:stoi(expression.substr(j+1,n));
int mid1=stoi(expression.substr(i,plus-i));
int mid2=stoi(expression.substr(plus+1,j-plus));
//cout<<left<<" "<<mid1<<" "<<mid2<<" "<<right<<endl;
int temp=left*(mid1+mid2)*right;
//cout<<temp<<endl;
if(temp<maxx)
{
maxx=temp;
res=expression.substr(0,i)+'('+expression.substr(i,j-i+1)+')'+expression.substr(j+1,n);
//cout<<"res="<<res<<endl;
}
}
}
return res;
}
};
遍历
后两题没做