Leetcode 3216. 交换后字典序最小的字符串

因为字符串长度只有100,所以直接模拟就行了。字符串比较不想写的话,可以用C的strcmp

 1 class Solution {
 2 public:
 3     string swap(string& s,int i,int j){
 4         string res="";
 5         for(int k=0;k<i;k++)
 6             res+=s[k];
 7         res+=s[j];
 8         for(int k=i+1;k<j;k++)
 9             res+=s[k];
10         res+=s[i];
11         for(int k=j+1;k<s.size();k++)
12             res+=s[k];
13         return res;
14     }
15     
16     string getSmallestString(string s) {
17         string res=s;
18         for(int i=0;i<s.size()-1;i++){
19             int a=s[i]-'0',b=s[i+1]-'0';
20             if(a%2!=b%2) continue;
21             string t=swap(s,i,i+1);
22             // cout<<t<<endl;
23             if(strcmp(t.c_str(),res.c_str())<0)
24                 res=t;
25         }
26         return res;
27     }
28 };

 

posted on 2024-10-30 10:38  greenofyu  阅读(1)  评论(0编辑  收藏  举报