1. 题目来源
2. 题目解析
思路很清楚,统计1的个数,然后将1个1安排到最后面一位成为奇数,剩下的1全部放在高位即可。
也可以直接排序后,字符串第一个字符一定是1,将其放到最后一位,即可。不过这个效率受到排序影响不如上面的统计1的个数快。
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
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) {
sort(s.begin(), s.end(), greater<char>());
return s.substr(1) + '1';
}
};