• Как реализовать задачу на пайтоне?

    adugin
    @adugin Куратор тега Python
    Решение первого варианта:
    word1 = 'aabc'
    word2 = 'aabacdff'
    
    if any(word2.count(letter) < word1.count(letter) for letter in set(word1)):
        option = 'нельзя'
    else:
        option = 'можно'
    
    print(f'Первое слово {option} составить из букв второго')

    Ещё эффективнее будет через Counter (обратите внимание на редкое использование unary minus):
    from collections import Counter
    
    counter = Counter(word2)
    counter.subtract(word1)
    
    option = ('можно', 'нельзя')[bool(-counter)]
    
    print(f'Первое слово {option} составить из букв второго')


    Со вторым вариантом задачи разберитесь сами, модифицируя код.
    Ответ написан
    Комментировать
  • Как реализовать задачу на пайтоне?

    @FasterTans
    1. Разбиваете первое слово побуквенно.
    2. Итерируетесь по второму слову
    2.1 Каждую текущию букву, проверяете, есть ли она в массиве из п.1. Если есть - хорошо, Если нету - выкидываете ошибку.
    2.2 Для вашего второго пунка, после нахождения буквы удаляете ее из массива.
    Ответ написан
    Комментировать
  • Как реализовать задачу на пайтоне?

    @kurrbanov
    Пишу бэкенд на Питоне
    Решение за O(n + k), n - длина первой строки, k - длина второй строки:

    Создадим словарь, в котором будем хранить количество вхождений каждой из букв первого слова. Например, "hello", будет представлено в словаре:
    {
    'h' : 1,
    'e' : 1,
    'l' : 2,
    'o' : 1
    }

    Далее просто пробегаемся по второму слову и проверяем, есть ли текущая буква в словаре. Если нет, то такое слово составить невозможно. Есть есть, то просто вычитаем у значения буквы в словаре единицу. Если не можем вычесть(не хватает букв в первом слове), то ответ тоже нет.

    s1 = str(input())
    s2 = str(input())
    
    d = dict()
    
    for i in range(len(s1)):
        if s1[i] not in d:
            d[s1[i]] = 1
        else:
            d[s1[i]] += 1
    
    
    def check():
        for i in range(len(s2)):
            if s2[i] not in d:
                return "NO"
            if d[s2[i]] - 1 >= 0:
                d[s2[i]] -= 1
            else:
                return "NO"
    
        return "YES"
    
    
    print(check())
    Ответ написан
    5 комментариев