首页 > 试题广场 >

字符串的全部子序列

[编程题]字符串的全部子序列
  • 热度指数:3664 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个字符串s,长度为n,求s的所有子序列
1.子序列: 指一个字符串删掉部分字符(也可以不删)形成的字符串,可以是不连续的,比如"abcde"的子序列可以有"ace","ad"等等
2.将所有的子序列的结果返回为一个字符串数组
3.字符串里面可能有重复字符,但是返回的子序列不能有重复的子序列,比如"aab"的子序列只有"","a","aa","aab","ab","b",不能存在2个相同的"ab"
4.返回字符串数组里面的顺序可以不唯一

数据范围:


要求:时间复杂度为

示例1

输入

"ab"

输出

["","a","ab","b"]

说明

返回["","b","a","ab"]也是可以的,视为正确,顺序不唯一 
示例2

输入

"dbcq"

输出

["","b","bc","bcq","bq","c","cq","d","db","dbc","dbcq","dbq","dc","dcq","dq","q"]
示例3

输入

"aab"

输出

["","a","aa","aab","ab","b"]

说明

返回的字符串数组里面不能存在"ab","ab"这样2个相同的子序列 
头像 AimerAimer
发表于 2022-03-06 12:13:01
题意:         给定一个字符串s,长度为n,求s的所有子序列         1.子序列: 指一个字符串删掉部分字符( 展开全文
头像 牛客348310978号
发表于 2024-06-14 10:12:39
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @retu 展开全文
头像 贪睡的乌龟在攒经验
发表于 2022-09-07 17:03:14
class Solution { public:     void sub(string s,int index,string path,set<string> &ans){         //递归函数第一步:想好各个 展开全文
头像 认认真真coding
发表于 2022-02-24 22:58:21
字符串的全部子序列 题目描述 给定一个字符串s,长度为n,求s的所有子序列 1.子序列: 指一个字符串删掉部分字符(也可以不删)形成的字符串,可以是不连续的,比如"abcde"的子序列可以有"ace","ad"等等 2.将所有的子序列的结果返回为一个字符串数组 3.字符串里面可能有重复字符,但是返回 展开全文
头像 Ay1n
发表于 2023-11-22 09:17:44
import java.util.*; public class Solution { public static String[] generatePermutation(String str) { Set<String> result = new Ha 展开全文
头像 牛客313925129号
发表于 2022-03-07 16:18:10
题意理解 输出一个字符串的所有子串。注意重复出现的子串只保留一个。 方法一 深度优先搜索 每一个字符都有2种情况,选择或者不选择。我们遍历字符串s中的所有字符,每个字符用递归尝试两种调用(选或者不选)。递归的边界条件是遍历到最后一个字符,将得到的子串加入到答案中,然后再回退并进行另一条支路上的递归。 展开全文
头像 fred-coder
发表于 2021-12-21 00:51:38
递归,将字符串的字符依次加入结果集中,在递归中将结果加入到集合中 # 按层递归, 递归 在 s > e 时结束, s == e 时操作 for i in range(s, e): dfs(s + 1, t) # 依次递归, 递归条件在 s > e 时结束, 在 s <= e 时 展开全文
头像 牛客687146177号
发表于 2022-03-07 23:42:23
方法:递归回溯:这里得到的结果通过排序再去重 public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * 展开全文
头像 xqxls
发表于 2022-03-09 22:01:10
题意整理 给定一个字符串s,长度为n,求s的所有子序列。 如果子序列重复,则只添加一次。 方法一(回溯) 1.思路整理 首先将字符串转化为字符数组。 然后对字符数组进行遍历,每一个字符要么添加、要么不添加,利用回溯法添加字符数组中所有可能的字符组合,每一个组合代表一个子序列。每完成一轮添加,将 展开全文
头像 CroMarmot
发表于 2022-02-24 17:21:34
字符串的全部子序列 题意 给一个字符串,求它的字符串的全部子序列 方法 递归生成所有序列并排序去重 分析 子序列不能改变字符的顺序,但是可以不连续 于是实际上相当于字符串中选取部分字符,然后保持原有的顺序拼接而成 考虑递归每一个深度分别选择当前位置字符和不选择当前位置字符, 并向下递归 这样就能得到 展开全文