Python Codewars (5 kyu): Первый повторяющийся символ

Решены несколько задач пятого ранга на сайте Codewars с использованием Python.

Задача: First one repeating character

Условие: Написать функцию, принимающую строку и возвращающую первый символ, не встречающийся повторно. Регистр игнорируется, но возвращаемый символ должен сохранять исходный регистр. Если все символы повторяются, возвращается пустая строка. Пример: для строки «стресс» функция должна вернуть «Т».

Решение: Создаётся список, куда добавляются символы, встречающиеся в строке только один раз (с учётом регистра). Функция возвращает первый элемент списка, если он не пуст, иначе — пустую строку.

def first_non_repeating_char(s):
    unique_chars = []
    for char in s:
        if s.lower().count(char.lower()) == 1:
            unique_chars.append(char)
    return unique_chars[0] if unique_chars else ""

Задача: Sort the weight

Условие: Член фитнес-клуба хочет изменить порядок сортировки списка участников по весу. Вес числа — сумма его цифр (например, вес 99 — 18, вес 100 — 1). Список должен быть отсортирован по возрастанию веса.

Решение: Используется функция sorted с ключом key, вычисляющим сумму цифр числа. Входные данные — строка, разделённая пробелами; результат преобразуется обратно в строку, разделённую пробелами.

def sum_digits(n):
    digits = [int(d) for d in str(n)]
    return sum(digits)

def sort_weight(weight):
    weights = [int(w) for w in weight.split()]
    sorted_weights = sorted(weights, key=sum_digits)
    return " ".join(map(str, sorted_weights))

Задача: Extract main domain from a URL

Условие: Написать функцию, принимающую URL и возвращающую доменное имя (например, для https://www.github.com — github).

Решение: Удаляются протоколы (http://, https://) и www. из URL с помощью replace. Затем строка разделяется по точкам с помощью split, и возвращается первый элемент.

def extract_domain(url):
    url = url.replace("http://", "").replace("https://", "").replace("www.", "")
    return url.split(".")[0]

Задача: String incrementer

Условие: Написать функцию, увеличивающую число в конце строки на единицу. Если числа нет, добавить единицу. Учитываются ведущие нули.

Решение: Строка разделяется на буквенную и числовую части с помощью rsplit. Если числовой части нет, добавляется «1». Иначе число увеличивается на 1 и преобразуется обратно в строку с помощью zfill для сохранения количества цифр.

def increment_string(string):
    letters, numbers = string.rsplit(' ', 1) if ' ' in string else (string, "")
    if numbers == "":
        return letters + "1"
    else:
        num = int(numbers) + 1
        return letters + str(num).zfill(len(numbers))

Рассмотрены решения нескольких задач с Codewars, демонстрирующие приёмы работы со строками и числами в Python, такие как count, split, sorted, replace, rsplit, zfill.

Что будем искать? Например,программа