670. 最大交换
贪心O(n):
class Solution { public: int maximumSwap(int num) { string s=to_string(num); map<char,int>mp; for(int i=0;i<s.length();i++) mp[s[i]]=i;//找出每个数最后一次出现的位置 for(int i=0;i<s.size();i++) { for(int j=9;j>(s[i]-'0');j--)//每个数后面看是否有比他大的数(从9开始最优,到它本身结束) { if(i<mp[j+'0'])有就交换,返回值 { swap(s[i],s[mp[j+'0']]); return value(s); } } } return num; } int value(string s)//求字符串的int值 { int sum=0; for(int i=0;i<s.length();i++) { sum=sum*10+(s[i]-'0'); } return sum; } };
暴力(O(n^2)):
class Solution { public: int maximumSwap(int num) { int num1=num; if(num<=9) return num; char ss[10]={'