Генерация всех покрывающих подстрок строки - PullRequest
1 голос
/ 26 августа 2010

Как вам следующее: для заданной строки сгенерировать все возможные способы разбора этой строки на подстроки (время важно, пробел не заботится). Например, учитывая строку ABCD, мне нужно сгенерировать:

ABCD

A BCD

A BC D

A B CD

AB CD

AB C D

ABC D

A B C D

Возможно рекурсивное решение, но я не могу заставить его работать.

Ответы [ 2 ]

4 голосов
/ 21 ноября 2013

Другое решение на Python, без рекурсии:

def substrings(s):
    for k in xrange(1, len(s)+1):
        for i in xrange(len(s)-k+1):
            yield s[i:i+k]

так что

>>> print list(substrings("ABCD"))
['A', 'B', 'C', 'D', 'AB', 'BC', 'CD', 'ABC', 'BCD', 'ABCD']
3 голосов
/ 27 августа 2010

Python:

def splitstring(s):
  result = [s]
  for i in range(1, len(s)):
    result.extend('%s %s' % (s[:i], x) for x in splitstring(s[i:]))
  return result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...