All Permutations

All Permutations

Given a string, return all possible permutations of its characters, sorted alphabetically.

example

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.