【问题标题】:Subsets for a string字符串的子集
【发布时间】:2013-11-23 11:24:24
【问题描述】:

我试图获取字符串的每个子集,但不知道该怎么做。如果有人可以帮助我,那就太好了。

>>> string('ab')
    a, b
>>> string('abc')
    a, b, c, ab, ac, bc,
>>> string('abcd')
    a, b, c, d, ab, bc, cd, da, abc, bcd, cda, dab,

这些都必须在列表中,并且字符串中可能有 n 个字符。程序应该返回所有可以形成的字符串子集。

【问题讨论】:

    标签: python string list subset


    【解决方案1】:

    您可以像这样使用itertools.combinations 和列表理解

    from itertools import combinations
    def myStrings(s):
        return ["".join(item) for i in range(1,len(s)) for item in combinations(s,i)]
    
    print myStrings('ab')
    print myStrings('abc')
    print myStrings('abcd')
    

    输出

    ['a', 'b']
    ['a', 'b', 'c', 'ab', 'ac', 'bc']
    ['a', 'b', 'c', 'd', 'ab', 'ac', 'ad', 'bc', 'bd', 'cd', 'abc', 'abd', 'acd', 'bcd']
    

    【讨论】:

    • 您的代码会返回每个子集,但您能否删除非循环的子集,例如转义字符(如“abd”和“acd”)
    【解决方案2】:

    在 javascript 中返回字符串的子集

    function getSubset(str) {
      let subSet = [];
      let i, j, len = str.length; 
    
      for(i=0; i<len; i++) {
        for(j=i+1; j<=len; j++) {
           subSet.push(str.slice(i, j))
        }
      }
      return subSet;
    }
    
    console.log(getSubset('CAT'))
    console.log(getSubset('GOD'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      相关资源
      最近更新 更多