如何获取字符串的所有子序列组合(在Java,C ++等中)

AhmetB-Google:

假设我有一个字符串“ 12345”,我应该获得该字符串的所有子序列组合,例如:

  1. -> 1 2 3 4 5
  2. -> 12 13 14 15 23 24 25 34 35 45
  3. -> 123124125234234345345
  4. -> 1234 1235 1245 1345 2345
  5. -> 12345

请注意,我将它们分组为不同数量的字符,但未更改其顺序。我需要一个方法/函数来做到这一点。

hughdbrown:

您需要电源。这里是所有StackOverflow上提及的问题powersets发电机组

这是python中的基本实现:

def powerset(s):
    n = len(s)
    masks = [1<<j for j in xrange(n)]
    for i in xrange(2**n):
        yield [s[j] for j in range(n) if (masks[j] & i)]


if __name__ == '__main__':
    for elem in powerset([1,2,3,4,5]):
        print elem

这是它的输出:

[]
[1]
[2]
[1, 2]
[3]
[1, 3]
[2, 3]
[1, 2, 3]
[4]
[1, 4]
[2, 4]
[1, 2, 4]
[3, 4]
[1, 3, 4]
[2, 3, 4]
[1, 2, 3, 4]
[5]
[1, 5]
[2, 5]
[1, 2, 5]
[3, 5]
[1, 3, 5]
[2, 3, 5]
[1, 2, 3, 5]
[4, 5]
[1, 4, 5]
[2, 4, 5]
[1, 2, 4, 5]
[3, 4, 5]
[1, 3, 4, 5]
[2, 3, 4, 5]
[1, 2, 3, 4, 5]

请注意,它的第一个结果是空集。从这个迭代改变for i in xrange(2**n):这个for i in xrange(1, 2**n):,如果你想跳过一个空集。

这是适用于产生字符串输出的代码:

def powerset(s):
    n = len(s)
    masks = [1<<j for j in xrange(n)]
    for i in xrange(2**n):
        yield "".join([str(s[j]) for j in range(n) if (masks[j] & i)])

编辑2009-10-24

好的,我看到您只是部分Java实现。我不懂Java,所以我会和您见面,并用C#给您代码:

    static public IEnumerable<IList<T>> powerset<T>(IList<T> s)
    {
        int n = s.Count;
        int[] masks = new int[n];
        for (int i = 0; i < n; i++)
            masks[i] = (1 << i);
        for (int i = 0; i < (1 << n); i++)
        {
            List<T> newList = new List<T>(n);
            for (int j = 0; j < n; j++)
                if ((masks[j] & i) != 0)
                    newList.Add(s[j]);
            yield return newList;
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Python

如何在Python中获取字符串的所有连续子字符串?

来自分类Java

在java中如何从字符串中获取子字符串直到字符c?

来自分类Java

获取字符串或组合的所有可能排列,包括Java中的重复字符

来自分类Javascript

如何编写Javascript函数以按顺序从字符串中获取所有回文子序列?

来自分类Dev

Java Bioinformatics-获取字符串中多个特定单词的所有索引

来自分类Dev

如何在C#中获取字符串中的所有其他字符

来自分类Dev

如何在C#中获取字符串中括号内的子字符串?

来自分类Dev

如何获取字符串枚举中的所有值?

来自分类Dev

如何获取字符串中的所有子字符串(用户输入)

来自分类Dev

如何从C语言输入中获取字符串

来自分类Dev

如何获取字符串中包含嵌套括号的括号中的所有值?

来自分类Dev

如何在Laravel中获取字符串中的所有列值

来自分类Dev

如何从字符串中获取特定格式的所有子字符串

来自分类Dev

如何在python中获取字符串的所有可能子集

来自分类Dev

如何从Java中的DataInputStream获取字符串?

来自分类Dev

如何获取字符列表中的所有子字符串(Python)

来自分类Dev

如何从包含搜索到的字符串的字符串中获取字符序列

来自分类Dev

mongodb获取字符串中的所有键

来自分类Dev

如何获取字符串中某个子字符串的所有位置?

来自分类Dev

如何在jQuery中获取字符串中所有无效字符的值?

来自分类Dev

如何获取字符串C ++中字符的值?

来自分类Dev

如何从java列表中获取字符串值

来自分类Dev

如何编写正则表达式模式以在 c# 中获取字符串的子字符串

来自分类Dev

如何在python中获取字母的所有可能字符串?

来自分类Dev

从python中的子序列中获取所有可能的字符串

来自分类Dev

Python:如何获取字典中以给定子字符串 s 开头的所有键

来自分类Dev

如何在python中获取字符串x之后的所有内容

来自分类Dev

如何使用javascript获取字符串中的所有多引号文本

来自分类Dev

提取字符串中的所有子字符串

Related 相关文章

  1. 1

    如何在Python中获取字符串的所有连续子字符串?

  2. 2

    在java中如何从字符串中获取子字符串直到字符c?

  3. 3

    获取字符串或组合的所有可能排列,包括Java中的重复字符

  4. 4

    如何编写Javascript函数以按顺序从字符串中获取所有回文子序列?

  5. 5

    Java Bioinformatics-获取字符串中多个特定单词的所有索引

  6. 6

    如何在C#中获取字符串中的所有其他字符

  7. 7

    如何在C#中获取字符串中括号内的子字符串?

  8. 8

    如何获取字符串枚举中的所有值?

  9. 9

    如何获取字符串中的所有子字符串(用户输入)

  10. 10

    如何从C语言输入中获取字符串

  11. 11

    如何获取字符串中包含嵌套括号的括号中的所有值?

  12. 12

    如何在Laravel中获取字符串中的所有列值

  13. 13

    如何从字符串中获取特定格式的所有子字符串

  14. 14

    如何在python中获取字符串的所有可能子集

  15. 15

    如何从Java中的DataInputStream获取字符串?

  16. 16

    如何获取字符列表中的所有子字符串(Python)

  17. 17

    如何从包含搜索到的字符串的字符串中获取字符序列

  18. 18

    mongodb获取字符串中的所有键

  19. 19

    如何获取字符串中某个子字符串的所有位置?

  20. 20

    如何在jQuery中获取字符串中所有无效字符的值?

  21. 21

    如何获取字符串C ++中字符的值?

  22. 22

    如何从java列表中获取字符串值

  23. 23

    如何编写正则表达式模式以在 c# 中获取字符串的子字符串

  24. 24

    如何在python中获取字母的所有可能字符串?

  25. 25

    从python中的子序列中获取所有可能的字符串

  26. 26

    Python:如何获取字典中以给定子字符串 s 开头的所有键

  27. 27

    如何在python中获取字符串x之后的所有内容

  28. 28

    如何使用javascript获取字符串中的所有多引号文本

  29. 29

    提取字符串中的所有子字符串

热门标签

归档