Рекурсивно вернуть, если число строчных букв в строке четное - PullRequest
2 голосов
/ 24 марта 2020

Я пытаюсь написать рекурсивную функцию, которая возвращает true, если число строчных букв в строке четное. Вот что я имею до сих пор:

def is_number_of_lowercase_even(s,low,high):
if (low==high):
    return False
if low<high:
    left = s[low].islower()       
    return left and not is_number_of_lowercase_even(s,low+1,high)

Я должен придерживаться определения функции выше. Не уверен, что я делаю не так.

1 Ответ

0 голосов
/ 24 марта 2020

Как то так? Разделите диапазон пополам. Если обе половинки четные или нечетные, то общая сумма четна.

def f(s, low, high):
  if low == high:
    return not s[low].islower()

  mid = low + (high - low) // 2
  left = f(s, low, mid)
  right = f(s, mid + 1, high)

  return (left and right) or (not left and not right)

strs = [
  "Abc",
  "ABc",
  "asdf",
  "aSdF",
  "ASdf",
  "AsDF"
]

for s in strs:
  print(s, f(s, 0, len(s) - 1))

"""
('Abc', True)
('ABc', False)
('asdf', True)
('aSdF', True)
('ASdf', True)
('AsDF', False)
"""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...