题目描述
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
C++
class Solution {
public:
int maximumSwap(int num) {
/*
将数值拆开放到vector;
判断最大值是否在最高位;
若是,判断次大值是否在次位;
以此类推...
*/
vector<int> b;
int n=num;
while(n){
int temp=n%10;
b.insert(b.begin(),temp);//在数组头插入数
n=n/10;
}
//以上几句完全可以由下句替代 string b = to_string(num);
for(int i=0;i<b.size();i++)
{
int temp=i;
for(int k=i+1; k<b.size();k++){
if(b[k]>=b[temp]){
temp=k; //为了找到最大值所在的下标
}
}
if(i!=temp &&b[i]!=b[temp]){
swap(b[i],b[temp]);
break;
}
}
/