给出一个字符串s,可以通过以下方式之一形成一个非空的子字符串:- 1.从s的左侧删除零个或多个字符。 2.从s的右侧删除零个或多个字符。 3.从s的左侧删除零个或多个字符,并从s的右侧删除零个或多个字符。
例如,让s = abcde 预期产量 abcde bcde A B C D cde 光盘 abc b 公元前 光盘 德 一种 b C d Ë 想解决这个问题,但我坚持逻辑!
答案 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)))