All Permutations
Given a string, return all possible permutations of its characters, sorted alphabetically.
Input: String (str).
Output: Iterable of strings (str).
Examples:
assert list(string_permutations("ab")) == ["ab", "ba"]
assert list(string_permutations("abc")) == ["abc", "acb", "bac", "bca", "cab", "cba"]
assert list(string_permutations("a")) == ["a"]
assert list(string_permutations("abcd")) == [
"abcd",
"abdc",
"acbd",
"acdb",
"adbc",
"adcb",
"bacd",
"badc",
"bcad",
"bcda",
"bdac",
"bdca",
"cabd",
"cadb",
"cbad",
"cbda",
"cdab",
"cdba",
"dabc",
"dacb",
"dbac",
"dbca",
"dcab",
"dcba",
]
How it’s used:
- puzzles and games like Scrabble where word combinations matter;
- cryptography to test possible keys given a set of characters;
- data analysis in genetics for possible gene combinations.