1. 题意
给二进制串,求重新排列后的最大串。
2. 题解
统计1
个数,将 C n t − 1 Cnt-1 Cnt−1个1
放开头,其他除第0
位都是0
。
class Solution {
public:string maximumOddBinaryNumber(string s) {int cnt = count(s.begin(), s.end(), '1');return string(cnt - 1, '1') + string(s.length() - cnt, '0') + '1';}
};
一次遍历
class Solution {
public:string maximumOddBinaryNumber(string s) {int lp = -1;string ans(s);int sz = s.size();if (s[sz - 1] == '1')++lp;for (int i = 0; i < sz - 1;++i) {if (s[i] == '1') {if (lp == -1){swap(ans[i],ans[sz - 1]);}else {swap(ans[i],ans[lp]);}++lp;}}return ans;}
};