DSA 26: Recursion - Anagram Generation [Part 7]

Anagram Recursive Function From Scratch
data structures
algorithms
Author

Tony Phung

Published

February 10, 2025

def anags(string):
    if len(string)==1:
        return string[0]
    
    anags_list = []
    substring_anags = anags(string[1:])
    
    for anag in substring_anags:
        for i in range(len(anag)+1):
            new_string = anag[:i] + string[0] + anag[i:]
            anags_list.append(new_string)
    
    return anags_list
anags("tea")
['tea', 'eta', 'eat', 'tae', 'ate', 'aet']
anags("mate")
['mate',
 'amte',
 'atme',
 'atem',
 'mtae',
 'tmae',
 'tame',
 'taem',
 'mtea',
 'tmea',
 'tema',
 'team',
 'maet',
 'amet',
 'aemt',
 'aetm',
 'meat',
 'emat',
 'eamt',
 'eatm',
 'meta',
 'emta',
 'etma',
 'etam']