Методы Python для поиска анаграмм строки

Чтобы найти анаграммы строки в Python, вы можете использовать несколько методов. Вот несколько подходов:

Метод 1: использование itertools.permutations()

import itertools
def find_anagrams(string):
    anagrams = []
    permutations = itertools.permutations(string)
    for permutation in permutations:
        anagram = ''.join(permutation)
        if anagram not in anagrams:
            anagrams.append(anagram)
    return anagrams
string = "python"
result = find_anagrams(string)
print(result)

Метод 2. Использование рекурсивной функции

def find_anagrams(string):
    if len(string) <= 1:
        return [string]
    else:
        anagrams = []
        for i, letter in enumerate(string):
            for sub_anagram in find_anagrams(string[:i] + string[i+1:]):
                anagrams.append(letter + sub_anagram)
        return anagrams
string = "python"
result = find_anagrams(string)
print(result)

Метод 3: использование Collections.Counter()

from collections import Counter
def find_anagrams(string):
    anagrams = []
    counter = Counter(string)
    _find_anagrams('', len(string), counter, anagrams)
    return anagrams
def _find_anagrams(current, length, counter, anagrams):
    if len(current) == length:
        anagrams.append(current)
        return
    for letter in counter:
        if counter[letter] > 0:
            counter[letter] -= 1
            _find_anagrams(current + letter, length, counter, anagrams)
            counter[letter] += 1
string = "python"
result = find_anagrams(string)
print(result)