给定一串长度为'n'的字符串。 如何获得长度为r的所有子序列(r <= n)。 我正在考虑使用动态编程来实现它,但无法提供一个好的解决方案。 我想要一个伪代码。

例如。 给定字符串“abc”并且r = 2。

输出:ab ba ac ca bc cb

提前致谢

===============>>#1 票数:3

重要的是要看到所有可能的子串(连续序列)和通常子序列(不一定是连续的)之间的差异。

如果这是真的,那么你被问到的就是所谓的组合 ,首先要估计你给出的字符串长度和子序列的大小。

递归算法是最好的方法:它允许您将子序列的长度作为变量。 你会在另一个线程中找到一个完美的答案。

===============>>#2 票数:1

尝试以下代码(没有伪代码但可以理解,我希望):

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;

string S;
int n;
vector<string> L;


void F(int index, int length, string str)
{
  if (length == 0) {
    L.push_back(str);
  } else {
    for (int i = index; i < n; i++) {
      string temp = str;
      temp += S[i];
      F(i + 1, length - 1, temp);
    }
  }
}

int main()
{
  S = "abcde"; // replace with your string
  n = S.length();
  int k = 3; // or what you want
  F(0, k, string(""));

  int count = 0;

  for (int i = 0; i < int(L.size()); i++) {
    string temp = L[i];
    sort(temp.begin(), temp.end());
    do {
      cout << temp << endl;
      count++;
    } while (next_permutation(temp.begin(), temp.end()));
  }


  cout << endl << "count = " << count << endl;
  return 0;
}

===============>>#3 票数:0

    public static void combinations(String suffix,String prefix){
            if(prefix.length()<0)
                      return;
            System.out.println(suffix);
            for(int i=0;i<prefix.length();i++) {
                 combinations(suffix+prefix.charAt(i),prefix.substring(i+1,prefix.length()));
        }
    }


//call above function like: combinations("","abcd");     

===============>>#4 票数:0

使用递归 - >选择而不选择概念

您必须做出一个决定要么选择要添加到字符串的元素。基于这种方法,我们有这个递归解决方案。

def subse(string,current,index,n):
    if index == n:
        print(current)
        return;
    else:
        subse(string,current+string[index],index+1,n) #pick element and add it to output string that is current
        subse(string,current,index+1,n) #don't pick 

if __name__ == "__main__": 
    subse('abc','',0,3)

  ask by Sashwat translate from so

未解决问题?本站智能推荐:

3回复

在长度为N的字符串中找到长度为1到N的所有字符串

我正在尝试查找字符串中的所有子字符串。 也就是说,长度为N的字符串中所有长度为1到N的字符串。 例 第一次尝试 我有一个可以在相对较小的N的字符串上工作的解决方案,但是在较大的Ns上,该解决方案非常慢。 这是当前的解决方案: 如何提高返回所有子字符串的算法的性能?
1回复

生成长度为n到1的字符串的所有组合的算法

我正在寻找一种算法的帮助,该算法将以递减的长度生成n个随机字母的所有可能组合。 例如,“ a”,“ b”,“ c”的数组应生成: abc acb bac bca cab cba ab ac ba bc ca cb abc 字母一旦使用就无法重复的地方
2回复

在C中生成长度为N的所有字符串

我自己尝试编码并且非常失败。 这基本上就是我想要的: 最后它应该生成每个字符串,使用charset az生成短于N个字符的字符串。 所以我不是在寻找排列 (在互联网上可以找到1001个实现),但是对于替换组合 (至少在Python中它是如何调用的)。 订单并不重要 ,速度是。
1回复

在“ n”个二进制字符串中找到最长的公共子字符串的长度

我得到了n字符串(n> = 2和n <= 4),每个字符串仅使用2个字母构造: a和b 。 在这组字符串中,我必须找到所有字符串中存在的最长的公共子字符串的长度。 保证存在解决方案。 让我们来看一个例子: 我不必打印(甚至不知道)子字符串,只需要打印其长度即可。
1回复

使用O(n)中的哈希表在字符串S中查找包含字符串T中所有字符的最小长度子字符串

我知道这个问题已经被问了不止一次了。我的疑问不是找到这个问题的解决方案,而是找到正确的复杂性。 我在这里阅读答案: 字符串x中包含字符串y中所有字符的最小窗口宽度 在该解决方案中,提出的复杂度是使用哈希表的O(n)。现在直到在哈希表中映射字符串T的字符都可以,但是要从哈希表中找到最小
1回复

来自一组长度(字符数组)的长度为k(长度为k的字符串)的所有可能置换长度n动态编程解决方案

我正在寻找一种动态编程解决方案,可从一组n个唯一的字符串中获取k个长度的所有排列。 例: 数组= {“ A”,“ B”,“ C”,“ D”,“ E”,“ F”,“ G”}; // n = 7个示例排列= {ABC},{ABD},{ABE}等// k = 3 我有一种解决方法,
8回复

在O(n)时间内查找字符串中最长有效括号序列的长度

我的朋友在接受采访时遇到了一个问题,他被告知有一个O(n)解决方案。 但是,我们都不能想到它。 这是一个问题: 有一个字符串只包含(和) ,找到最长有效括号子串的长度,它应该很好地形成。 例如")()())" ,最长的有效括号是()() ,长度是4。 我用动态编程想出来了,
2回复

字符串数组中的所有常见子序列

我正在尝试在ruby的字符串数组中找到所有常见的子序列, 而不仅仅是最长的单个子序列 。 这意味着如果输入是 [“ aaaF hello”,“ aaaG hello”,“ aaaH hello”] 预期的输出是 [“ aaa”,“你好”] 我一直在用最长
3回复

字符串1中的最小长度窗口,其中字符串2是子序列

给出了主DNA序列(一个字符串)(比如说string1),另一个要搜索的字符串(比如说string2)。 您必须在string1中找到最小长度的窗口,其中string2是子序列。 string1 =“ abcdefababaef” string2 =“ abf” 我想到但似乎不起
3回复

查找字符串中最大长度的所有有序序列

我要解决以下问题:有两个具有任意内容的任意长度的字符串。 我需要找到最大长度的所有有序序列,该序列出现在两个字符串中。 示例1:输入:“ a1b2c3”“ 1a2b3c”输出:“ 123”“ 12c”“ 1b3”“ 1bc”“ a23”“ a2c”“ ab3”“ abc” 示例2: