Given a string `s`, partition `s` such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of `s`.
Backtracking with Pruning
We use backtracking to explore all possible ways to partition the string. At each step, we pick a substring starting from the current index. If that substring is a palindrome, we add it to our current partition and recursively process the rest of the string. If we reach the end of the string, the current partition is a valid solution.