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;
}
};