Для двоичной строки s найдите максимально возможное количество операций, позволяющих разделить данную строку.
Например. если s = «110100», последняя строка должна быть «000111». Оптимальным способом максимизировать количество операций будет:
- Поменять местами второй и третий символы стоимостью 2. Строка станет «101100»
Поменяйте местами первый и второй символы за 2. Строка станет «011100». - Наконец, мы перемещаем каждый из них в конец, т. е. перемещаем на 2 позиции. по цене 3 каждый.
Нам нужно создать функцию, которая возвращает длинное целое число, обозначающее максимально возможную стоимость разделения данной строки.
Вот что я сделал в своей попытке, но не смог пройти большую часть теста случаи
def getMaxCost(s):
n = len(s)
cost = 0
ones = []
for i in range(n):
if s == "1":
ones.append(i)
total = len(ones)
for i in range(total):
target = n - (total - i)
cost += target - ones
return cost
Подробнее здесь: https://stackoverflow.com/questions/788 ... rity-of-th