leetcode
1980. 找出不同的二进制字符串
给你一个字符串数组 nums ,该数组由 n 个 互不相同 的二进制字符串组成,且每个字符串长度都是 n 。请你找出并返回一个长度为 n 且 没有出现 在 nums 中的二进制字符串。如果存在多种答案,只需返回 任意一个 即可。
#找到从后往前数最近的一个0,并且把之后的1全部翻转
def findNearstZero(temp,n,perm):
for i in range(n-2,-1,-1):
if temp[i]=='0':
temp[i]='1'
for j in range(i + 1, n):
temp[j]='0'
perm.append(''.join(temp))
break
class Solution(object):
def findDifferentBinaryString(self, nums):
"""
:type nums: List[str]
:rtype: str
"""
n=len(nums)
length=len(nums[0])
if n==2**length:
return None
#生成n位二进制的全排列
perm=[]
temp=""
for i in range(length):
temp=temp+"0"
perm.append(temp)
temp = list(temp)
for i in range(2**length):
if temp[length-1]=='0':
temp[length-1]='1'
perm.append(''.join(temp))
else:
findNearstZero(temp,length,perm)
#找到最小的一个不再nums数组中的n位二进制
for j in perm:
if j not in nums:
return j