classSolution{public:intmaximumSwap(intnum){strings=to_string(num);vector<int>lastIndex(10,-1);// {digit: last index}for(inti=0;i<s.length();++i)lastIndex[s[i]-'0']=i;for(inti=0;i<s.length();++i)for(intd=9;d>s[i]-'0';--d)if(lastIndex[d]>i){swap(s[i],s[lastIndex[d]]);returnstoi(s);}returnnum;}};
classSolution{publicintmaximumSwap(intnum){char[]s=Integer.toString(num).toCharArray();int[]lastIndex=newint[10];// {digit: last index}for(inti=0;i<s.length;++i)lastIndex[s[i]-'0']=i;for(inti=0;i<s.length;++i)for(intd=9;d>s[i]-'0';--d)if(lastIndex[d]>i){s[lastIndex[d]]=s[i];s[i]=(char)('0'+d);returnInteger.parseInt(newString(s));}returnnum;}}