题目:
给你一个 二进制 字符串 s
,其中至少包含一个 '1'
。
你必须按某种方式 重新排列 字符串中的位,使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。
以字符串形式,表示并返回可以由给定组合生成的最大二进制奇数。
注意 返回的结果字符串 可以 含前导零。
想法:
简单题之所以被称之为简单题是有道理的(doge),今天每日一题真的好简单啊嘎嘎嘎,
1.因为要是奇数,所以返回的字符串末尾必为1。
2.将原字符串中的所有‘1’刨除掉要放到末尾的那一个外,全部放到字符串开端,中间全是‘0’。
代码如下:
class Solution(object):
def maximumOddBinaryNumber(self, s):
"""
:type s: str
:rtype: str
"""
n = len(s)
count = 0 # 计数器,统计'1'的个数
for i in range(0, n):
if s[i] == '1':
count += 1
a = '1'*(count-1) + '0'*(n-count) + '1'
return a
提交通过:
然后去看了一眼官方题解,原来python里可以直接用count()函数统计字符串里某个字符的个数!!所以用来统计‘1’的循环也可以省掉了,代码如下:
class Solution(object):
def maximumOddBinaryNumber(self, s):
"""
:type s: str
:rtype: str
"""
n = len(s)
count = s.count('1')
a = '1'*(count-1) + '0'*(n-count) + '1'
return a
提交通过,小小的提升了一下时间和空间: