1 #include <string> 2 #include <iostream> 3 using namespace std; 4 5 6 7 class SwappingDigits 8 { 9 public: 10 bool notBiggest(string &s,int pos) 11 { 12 int len=s.length(); 13 int i=0; 14 for (i=pos+1;i<len;i++) 15 { 16 if (s[i]<s[pos]&&(s[i]!='0'||pos!=0)) 17 { 18 return true; 19 } 20 } 21 return false; 22 } 23 int findSmallest(string&s,int pos) 24 { 25 int len=s.length(); 26 int i=0; 27 char c='9'; 28 int index; 29 for (i=len-1;i>pos;i--) 30 { 31 if (s[i]<c&&(s[i]!='0'||pos!=0)) 32 { 33 c=s[i]; 34 index=i; 35 } 36 } 37 return index; 38 } 39 string minNumber(string num) 40 { 41 int i; 42 int len=num.length(); 43 for (i=0;i<len-1;i++) 44 { 45 if (notBiggest(num,i)) 46 { 47 int index=findSmallest(num,i); 48 char c=num[index]; 49 num[index]=num[i]; 50 num[i]=c; 51 break; 52 } 53 } 54 return num; 55 } 56 }; 57 int main() 58 { 59 SwappingDigits sol; 60 string s; 61 while(true) 62 { 63 cin>>s; 64 cout<<sol.minNumber(s)<<endl; 65 } 66 }