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 }

 

posted on 2013-07-10 17:59  宇睿  阅读(178)  评论(0编辑  收藏  举报