C plus plus Solution


#1

string Solution::solve(string A) {
vector v;
int i,n=A.length(),p=0;
string s="";

if(n<=1){
    s="-1";
    return s;
}

for(i=0;i<n;i++)
  v.push_back((A[i]-48));
  
for(i=n-1;i>0;i--){
  if(A[i]>A[i-1]){
     p=i;
     break;
  }
}

if(p==0){
  s="-1";
  return s;
}

sort(v.begin()+p,v.end());
int w=upper_bound(v.begin()+p,v.end(),v[p-1])-v.begin();
swap(v[w],v[p-1]);
for(i=0;i<n;i++)
  s+=to_string(v[i]);
return s;

}