Рубрики
Без рубрики

Как я решил разделить строки кодирования

Это первый пост серии о онлайн -задачах по решению кодирования, и это о том, как я решил … Помечено питоном, выпадающими, кодингчалге, алгоритмами.

Это первый пост серии о онлайн -задачах по решению кодирования, и это о том, как я решил задачу «разделенные строки».

Одна из моих ежедневных занятий – практиковать и решать проблемы кодирования, и после некоторого времени я решил написать о том, как я решаю каждый из них.

Эта задача кода размещена по адресу codewars.com И вот инструкции:

Заполните решение, чтобы он разделил строку на пары двух символов. Если строка содержит нечетное количество символов, то она должна заменить пропущенный второй символ последней пары подчеркиванием (‘_’).

Примеры:

solution('abc') # should return ['ab', 'c_']
solution('abcdef') # should return ['ab', 'cd', 'ef']

При решении проблем первое, что мне нравится делать, это разделить и завоевать, поэтому я разрушаю всю проблему в небольших проблемах и начинаю с этого.

Моим первым решением было использование декларативной модели программирования, чтобы я мог свободно выразить свои мысли, вот решение, которое я нашел:

def solution(s):
    list_of_pairs = []
    pair = ''
    for char in s:
        pair += char
        if len(pair) == 2:
            list_of_pairs.append(pair)
            pair = ''
    if pair:
        list_of_pairs.append(pair + '_')
    return list_of_pairs

Там нет сложности с этим решением, но оно немного многословно и полностью декларативно.

Первое, что было объявить структуры данных, которые сохранят конечный результат, список пар и аккумулятор String Pare, используемые внутри цикла FO.

Внутри цикла я увеличивает аккумулятор, затем проверяет, пришло ли время заполнить список с помощью пары и сбросить аккумулятор.

Как только петля будет завершена, прежде чем вернуть результат, мне нужно проверить, остается ли что -то в аккумуляторе, и добавить его в список, добавив подчеркивание к концу пары, следуя правилам вызова.

Все тесты прошли.

Это было очень простое и не оптимизированное решение.

Следующим шагом было рефакторирование решения и найти эффективное решение для решения решения, вот решение, которое я нашел:

def solution(s):
    return [s[i]+'_' if len(s[i:]) == 1 else s[i:i+2] 
            for i in range(0, len(s), 2)]

Первое, что было разделить строку в диапазоне, используя 2 шага между каждым элементом.

С этим диапазоном я могу использовать с помощью понимания списка, чтобы я мог извлечь то, что мне нужно, пары из 2 символов.

Это второе окончательное решение было написано в императивной модели программирования и использовали расширенные функции Python Like Понимание списка и Нарезка Анкет

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

Оригинал: “https://dev.to/filipebezerra/how-did-i-solve-split-strings-coding-challenge-1nic”