问题:给定正整数N,计算所有长度为N但没有连续1的二分字符,比如N=2,输出[00,01,10],N=3,输出为[000,001,010,100,101].
思路比较简单,就是利用二进制编码下即可,举一反三,利用已经学过的知识完成即可,题目种没有连续1的条件,自己去设计,懒得弄了。贴代码:
def bin_seq(n):
temp = []
for i in range(1, 2**n):
binv = bin(i)[2:]
binv = binv.zfill(n)
temp.append(binv) #取出该数的二进制
return temp
def bin_seq2(n):
if n == 1: return ['0','1']
return ['0'+i for i in bin_seq2(n-1)] + ['1'+i for i in bin_seq2(n-1)[::-1]]
s = 'ABC'
n = len(s)
str2bin = bin_seq2(n)
print(str2bin)
str2bin2 = bin_seq(n)
print(str2bin)
输出结果为:
['000', '001', '011', '010', '110', '111', '101', '100']
['000', '001', '011', '010', '110', '111', '101', '100']
下面一种更加简洁,但是不好理解,上面好理解但是繁琐点!没有连续1的问题看官门自己琢磨下哇,吃饭去了!