无法从给定的字符串计算子字符串?

时间:2019-07-06 08:57:34

标签: python-3.x

给出一个字符串s,可以通过以下方式之一形成一个非空的子字符串:- 1.从s的左侧删除零个或多个字符。 2.从s的右侧删除零个或多个字符。 3.从s的左侧删除零个或多个字符,并从s的右侧删除零个或多个字符。

例如,让s = abcde 预期产量 abcde bcde A B C D cde 光盘 abc b 公元前 光盘 德 一种 b C d Ë 想解决这个问题,但我坚持逻辑!

1 个答案:

答案 0 :(得分:0)

您可以尝试递归:

>>> t = "asdGARBAGEasd\nHow did you like St. Petersburg? more stuff with ?" 
>>> re.search(p, t).group()
'How did you like St. Petersburg?'

打印:

s = "abcde"

def get_string(s, index_left=0, index_right=0, seen=set()):
    rv = s[index_left:len(s)-index_right]

    if len(rv) == 0:
        return

    yield rv

    if (index_left + 1, index_right) not in seen:
        seen.add( (index_left + 1, index_right) )
        yield from get_string(s, index_left + 1, index_right, seen)

    if (index_left, index_right + 1) not in seen:
        seen.add( (index_left, index_right + 1) )
        yield from get_string(s, index_left, index_right + 1, seen)

print(sorted(get_string(s), key=lambda k: (-len(k), k)))