首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

生成长度为n且设置了k位的所有二进制字符串

生成长度为n且设置了k位的所有二进制字符串,可以使用递归方法来实现。

递归方法的基本思路是:

  1. 如果n=0,则返回空列表。
  2. 如果n>0,则将第一位设置为0,递归生成长度为n-1的二进制字符串,将其与第一位拼接起来,得到长度为n的二进制字符串。
  3. 如果n>0,则将第一位设置为1,递归生成长度为n-1的二进制字符串,将其与第一位拼接起来,得到长度为n的二进制字符串。
  4. 将两种情况得到的所有二进制字符串合并起来,返回结果。

以下是Python代码实现:

代码语言:python
代码运行次数:0
复制
def generate_binary_strings(n, k):
    if n == 0:
        return []
    if n == 1:
        return ['0', '1']
    result = []
    for s in generate_binary_strings(n-1, k):
        if len(s) < k:
            result.append('0' + s)
        if len(s) < k:
            result.append('1' + s)
    return result

这个函数接受两个参数,n表示二进制字符串的长度,k表示设置的位数。如果n小于等于0,则返回空列表。如果n等于1,则返回'0', '1'。否则,递归生成长度为n-1的二进制字符串,将第一位设置为0或1,将其与长度为n-1的二进制字符串拼接起来,得到长度为n的二进制字符串。最后将所有二进制字符串合并起来,返回结果。

例如,如果n=3,k=2,则函数返回'000', '001', '010', '011', '100', '101', '110', '111',其中每个二进制字符串的长度为3且设置了2位。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 2024-09-25:用go语言,给定一个长度 n 整数数组 nums 和一个正整数 k, 定义数组“能量“所有 k

    2024-09-25:用go语言,给定一个长度 n 整数数组 nums 和一个正整数 k, 定义数组"能量"所有 k 子序列数量之和。...请计算 nums 数组中所有子序列能量和,并对结果取模 10^9 + 7 后返回。 输入:nums = [1,2,3], k = 3。 输出:6。...大体步骤如下: 1.定义一个数组 f 用于记录不同和值下子序列数量,数组长度 k+1,初始时令 f[0] = 1 表示和 0 时只有空子序列存在。...这表示由于当前 j 无法和当前 x 相加得到新和值,因此只能将和 j 子序列数量乘以 2。 3.最终返回 f[k],即所有 k 子序列数量之和。...总体时间复杂度是 O(n * k),其中 n 是 nums 长度k 是给定正整数。 空间复杂度 O(k)。

    15220

    2024-06-26:用go语言,给定一个长度n数组nums和一个正整数k, 找到数组中所有相差绝对值恰好k子数组, 并

    2024-06-26:用go语言,给定一个长度n数组nums和一个正整数k, 找到数组中所有相差绝对值恰好k子数组, 并返回这些子数组中元素之和最大值。 如果找不到这样子数组,返回0。...2.遍历输入数组 nums:对于数组中每个元素 x: • 查找 x+k 是否在 minS 中,如果在,则更新 ans sum + x - minS[x+k] 与 ans 最大值。...• 查找 x-k 是否在 minS 中,如果在,则更新 ans sum + x - minS[x-k] 与 ans 最大值。...3.最终判断 ans 是否仍负无穷大,如果是,则返回 0,否则将 ans 转换为 int64 类型后返回。 总时间复杂度 O(n),其中 n 输入数组长度。...总额外空间复杂度也是 O(n),因为使用了一个 map 来存储元素之和特定值最小下标,当输入数组中所有元素都不相差绝对值恰好 k 时,map 中最多会存储 n 个元素。

    5520

    2022-08-06:给定一个数组arr,长度N,arr中所有的值都在1~K范围上, 你可以删除数字,目的是让arr最长递增子序列长度小于K。 返回至少删除

    2022-08-06:给定一个数组arr,长度N,arr中所有的值都在1~K范围上,你可以删除数字,目的是让arr最长递增子序列长度小于K。返回至少删除几个数字能达到目的。...N <= 10^4,K <= 10^2。来自京东。4.2笔试。答案2022-08-06:动态规划。时间复杂度:O(N*K)。额外空间复杂度:O(N*K)。rust和typescript代码都有。...// len长度了!len = 3 : 1 2 3// arr[index....]是能够决定,之前,已经不能再决定// 返回:让最终保留数字,凑不足k长度情况下,至少要删几个!...// len长度了!len = 3 : 1 2 3// arr[index....]是能够决定,之前,已经不能再决定// 返回:让最终保留数字,凑不足k长度情况下,至少要删几个!...(arr: number[], k: number): number { var n: number = arr.length; var dp: number[][] = new Array(n);

    90510

    2023-06-02:给定一个二进制数组 nums 和一个整数 kk翻转 就是从 nums 中选择一个长度 k 子数组, 同时把子数组中每一个 0

    2023-06-02:给定一个二进制数组 nums 和一个整数 kk翻转 就是从 nums 中选择一个长度 k 子数组,同时把子数组中每一个 0 都改成 1 ,把子数组中每一个 1 都改成...答案2023-06-02:大体步骤如下:1.初始化一个大小 $n$ 队列 queue,用于存储需要翻转子数组起始下标。...4.如果队列 queue 长度大于 0 队列最后一个元素下标加 k 大于数组长度,则返回 -1 表示无法完成翻转;否则,返回翻转次数 ans。...时间复杂度 $O(n)$,其中 $n$ 是数组 nums 长度。循环遍历一次数组 nums,每个元素最多会被加入或弹出队列一次,因此时间复杂度是线性。...空间复杂度也是 $O(n)$,因为需要使用一个大小 $n$ 队列来存储需要翻转子数组下标。同时,由于只保存子数组起始下标,因此空间复杂度不会超过 $n$。

    50820

    图解|什么是RSA算法

    1.随机选择两个质数P和Q 我们选择P=61,Q=53,计算PQ乘积N=PQ=61*53=3233,将N转换为二进制:110010100001,N二进制长度是12,也就是密钥长度12。...P=61、Q=53 则N=3233,那么N欧拉函数记为M=(P-1)*(N-1) = 60*52=3120 3.找一个与M互素整数E M和E之间除了1以外没有公约数(互质)E<M,我们随机选择E...3.5 大整数因数分解 大整数因数分解是极其困难,属于NPC问题,除了暴力破解没有很好解决方案,目前人类分解最大长度二进制768,1024长度目前尚未破解,因此1024长度二进制密钥是安全...麻省理工数学家在欧拉定理&费尔马定理等等一些数学定理基础上创造伟大RSA非对称加密算法。...RSA算法安全性取决于大数质因数分解难度,目前而言1024二进制长度密钥人类都没有破解,为了安全性考虑可使用2048长度RSA密钥进行加密。

    2.5K10

    LeetCode周赛255 状态压缩DP与集合问题

    找出不同二进制字符串 给你一个字符串数组 nums ,该数组由 n 个 互不相同 二进制字符串组成,每个字符串长度都是 n 。...请你找出并返回一个长度 n 没有出现 在 nums 中二进制字符串。如果存在多种答案,只需返回 任意一个 即可。...题解: 这道题可以使用对角线来做,题目是n字符串每个字符串长度n,所求字符串s,只需要确定s[i]和第i个字符串第i个字符不一样,那么s就和每一个字符串不一样。...比如对于示例1中,对于组合1、5、7,其信息计算是: 定义bitset F,当前和多少,就在多少设置1。注意这里下标1、6、13指是第1、6、13。...首先处理第一行,对于1来说,设置F[1] = 1,信息0001, 处理第二行5,这时候和6,那么设置F[6] = 1,信息100000, 处理第三行7,这时候和13,设置F[13]=1,信息

    98430

    《算法和数据结构》算法零基础五十题讲解

    数字范围按与 33、颠倒二进制 34、前 n 个数字二进制中 1 个数 35、好数对数目 36、判断句子是否全字母句 37、执行操作后变量值 38、IP 地址无效化 39、统计一致字符串数目...请返回 nums中所有元素按异或 X O R XOR XOR 后得到结果。 2. 问题分析   分两步模拟,先把所有数都通过规则生成出来。...问题描述   给你一个长度 n ( n ≤ 100 ) n (n \le 100) n(n≤100) 正整数数组 arr ,请你计算所有可能奇数长度子数组和。...2i+1​ 位置上值; ( 4 ) (4) (4) 设置返回数组长度; ---- 25、打印从1到最大n位数 1....问题分析   假设某个数k k k 0,第 k + 1 k+1 k+1 1,二进制表示如下: . . . 1 00...00 ⏟ k ...1\underbrace{00...00

    49910

    《算法和数据结构》算法零基础五十题讲解

    数字范围按与 33、颠倒二进制 34、前 n 个数字二进制中 1 个数 35、好数对数目 36、判断句子是否全字母句 37、执行操作后变量值 38、IP 地址无效化 39、统计一致字符串数目...请返回 nums中所有元素按异或 X O R XOR XOR 后得到结果。 2. 问题分析   分两步模拟,先把所有数都通过规则生成出来。...问题描述   给你一个长度 n ( n ≤ 100 ) n (n \le 100) n(n≤100) 正整数数组 arr ,请你计算所有可能奇数长度子数组和。...2i+1​ 位置上值; ( 4 ) (4) (4) 设置返回数组长度; ---- 25、打印从1到最大n位数 1....问题分析   假设某个数k k k 0,第 k + 1 k+1 k+1 1,二进制表示如下: . . . 1 00…00 ⏟ k …1\underbrace{00…00}_{\rm

    45220

    普林斯顿算法讲义(三)

    程序 LSD.java 实现用于固定长度字符串 LSD 基数排序。它包括一种用于对待每个整数作为 4 字节字符串处理 32 整数进行排序方法。...给定一个包含 N 个不同长度十进制整数数组,描述如何在 O(N + K) 时间内对它们进行排序,其中 K所有 N 个整数总位数。 美国国旗排序。...Manacher.java 是 Manacher 算法实现。 重复子串。 [ Mihai Patrascu] 给定一个整数 K长度 N 字符串,找到至少出现 K最长子串。...例如,确定长度 N 字符串是否与正则表达式(a|aa)*b匹配,如果选择字符串得当,可能需要指数级时间。下表展示 Java 1.4.2 正则表达式失败情况。...至少有 3 个字符,并且第三个字符 0 0 数量是 3 倍数 以相同字符开头和结尾 奇数长度 以 0 开头长度奇数,或以 1 开头长度偶数 长度至少 1 最多为

    15510

    百度最新面试题集锦

    n转换到二进制空间来看(比如7111,6110): - 如果最后一是0,则对应于偶数,直接进行除2操作。 - 如果最后一是1,情况则有些复杂。 **如果最后几位是???...由于大于10000生成数必定大于10000,所以我们只需遍历1到10000中数,计算生成数,并将bool数组中对应设置true,表示这个数可以有其它数生成。...答案:   300万个字符串最多(假设没有重复,都是最大长度)占用内存3M*1K/4=0.75G。所以可以将所有字符串都存放在内存中进行处理。   ...可以使用key字符串(事实上是字符串hash值),值字符串出现次数hash来统计每个每个字符串出现次数。并用一个长度10数组/链表来存储目前出现次数最多10个字符串。   ...13、找出被修改过数字       n个空间(其中n<1M),存放a到a+n-1数,位置随机数字不重复,a未知。现在第一个空间数被误设置-1。已经知道被修改数不是最小

    65210

    常见加密方式和Python实现

    所有字符转化为ASCII码。 将ASCII码转化为8二进制 。 将二进制3个归成一组(不足3个在后边补0)共24,再拆分成4组,每组6。 统一在6二进制前补两个0凑足8。...经常说“MD5加密”,就是信息摘要算法。 md5,其实就是一种算法。可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度128bit串。这个串,基本上是唯一。 4.1....这样表达是很不友好。所以将二进制转成了16进制,每4个bit表示一个16进制,所以128/4 = 32 换成16进制表示后,32。 为什么网上还有md5是16呢?...AES分组密码,分组密码也就是把明文分成一组一组,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128,也就是说,每个分组16个字节(每个字节8)。...密钥长度可以使用128、192或256。密钥长度不同,推荐加密轮数也不同。 一般常用是128 8.2.

    2.3K11

    【C++】7道经典面试题带你玩转vector

    找出那个只出现一次元素。 你必须设计并实现线性时间复杂度算法来解决此问题,该算法只使用常量额外空间。...,该题目解题步骤如下: 将数组所有元素相异或 找到可以区分两个只出现一次二进制 根据这个不同二进制将数据分为两组分别异或 两组异或结果就是两个只出现一次数字 解题代码: class...1 二进制表示是 ...0001,所以这个操作目的是检查右移后结果最低位(也就是现在第 i )是否 1。...例如输入一个长度9数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现5次,超过数组长度一半,因此输出2。...2-9 字符串,返回所有它能表示字母组合。

    8510

    蓝桥练习题总结(一)字母图形、完美的代价、01串、序列求和

    输入格式   第一行是一个整数N,表示接下来字符串长度(N <= 8000)   第二行是一个字符串长度N.只包含小写字母 输出格式   如果可能,输出最少交换次数。   ...如果相遇,说明字符串遍历完毕。 找到相同字母: 如果找到了与头指针i处字符相等字符,我们将匹配字符后面的所有字符都向前移动一,并累计移动次数。...// 如果i和k相遇,说明中间字符没有匹配字符 if (i == k) { // 如果字符串长度偶数,或者flag已经被设置...、01字串 问题描述 对于长度5一个01串,每一都可能是0或1,一共有32种可能。...x >> i & 1; // 结果必然0或1, 表示 x 二进制表示中第i 获取二进制某一应用: #include using namespace std

    7910

    10亿数据量只需要100MB内存,Redis存储为什么这么牛?

    SETBIT 语法:SETBIT key offset value 即:命令 key 偏移量 0/1 setbit命令用于写入位数组指定偏移量二进制设置值,偏移量从0开始计数,只允许写入1或者0,...SDS优点: 时间复杂度O(1) 杜绝缓冲区溢出 减少修改字符串长度时候所需内存重分配次数 二进制安全API操作 兼容部分C字符串函数 redis中位数组采用是String字符串数据格式来存储...大家都知道是一个字节用是8个二进制来存储,也就是8个0或者1,即一个字节可以存储十进制0~127数字,也即包含了所有的数字、英文大小写字母以及标点符号。...比如以128一次遍历,那么他遍历次数就是所有的位数除以128。 BITTOP命令则是根据不同操作有不同执行方式。比如AND操作,则需要查看1即可。...key,用户活跃就写入offset用户id值1。

    1.8K30
    领券