Как разбить строку на подстроки последовательных гласных? - PullRequest
0 голосов
/ 12 июля 2020

У меня длинная строка букв, мне нужно взять все подстроки, состоящие из последовательных значений, и вернуть самую длинную. У меня была идея с регулярным выражением, но потом я понял, что никогда раньше не касался регулярного выражения, и я слишком над головой. Есть ли способ сделать это без регулярного выражения?

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

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Хорошо, так что просто напечатав то, что я собираюсь сделать, я что-то мысленно «щелкнул», и внезапно это стало очевидным .:)

Итак, образцы входных данных выглядят так:

Тест .assert_equals (resolve ("ultrarevolutionariees"), 3)

3 - длина самой длинной последовательной подстроки гласных

И мой код выглядит так, я не могу поверить, что это так просто. На мой взгляд, это было сложно, но просто набрав его, я пролил на него новый свет, fantasti c чувство:)

def solve(s):
  substrings = []
  vowels = 'aeiou'
  current_sub = ""
  for letter in s:
      if letter in vowels:
          current_sub += letter
      else:
          substrings.append(current_sub)
          current_sub = ""
  x = [len(x) for x in substrings]
  return max(x)
0 голосов
/ 12 июля 2020

Это не опубликовано как приемлемый ответ, но слишком долго для комментариев ...

Вот один из подходов в качестве сценария, преобразовать в Python.

$ echo asdfasenaseadsfiaiieaaadfaeadaed |   # sample input
  grep -oE '[aeiou]+'                   |   # extract consecutive vowels
  awk '{print length "\t" $1}'          |   # add length to sort by
  sort -nr                              |   # sort descending order, numerically
  sed 1q                                |   # take the first, which is the max
  cut -f2                                   # remove the length 

iaiieaaa
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...