String Permutations
Problem Statement
Given a string, return all possible permutations of its characters.
Example: Input: "abc" → Output: ["abc","acb","bac","bca","cab","cba"]
Approach 1: Backtracking / Recursive Swapping
Explanation: Swap each character with all subsequent characters and recurse.
Time Complexity: O(n! × n) (permutation count × copy time)
Space Complexity: O(n) (recursion stack)
function permute(s, l): if l == len(s): add s to result return for i in l..len(s)-1: swap s[l] and s[i] permute(s, l+1) swap back permute(string, 0)
Approach 2: Using Used Array
Explanation: Build permutation step by step, marking characters used.
Time Complexity: O(n! × n)
Space Complexity: O(n)
function backtrack(path, used): if len(path) == n: add path copy to result return for i in 0..n-1: if used[i]: continue used[i]=True backtrack(path + s[i], used) used[i]=False backtrack("", [False]*n)
Approach 3: Itertools / Library (Python)
Explanation: Use built-in permutation function.
Time Complexity: O(n! × n)
Space Complexity: O(n! × n)
from itertools import permutations result = list(permutations(s))