py.png

Problem

Shuffle String - LeetCode

You are given a string s and an integer array indices of the same length. The string s will be shuffled such that the character at the ith position moves to indices[i] in the shuffled string.

Return the shuffled string.

Example 1:

Input: s = "codeleet", indices = [4,5,6,7,0,2,1,3]
Output: "leetcode"
Explanation: As shown, "codeleet" becomes "leetcode" after shuffling.

Example 2:

Input: s = "abc", indices = [0,1,2]
Output: "abc"
Explanation: After shuffling, each character remains in its position.

Constraints:

Solution

class Solution:
    def restoreString(self, s: str, indices: List[int]) -> str:
        # Create an empty list with the same length as `s`
        shuffled = [''] * len(s)

        # Iterate through each character and its destined index
        for char, index in zip(s, indices): # Key Point: zip()
            # Place the character in its new position
            shuffled[index] = char

        # Convert the list back to a string and return it
        return ''.join(shuffled)

Key Point: zip()

The zip() function is effectively used in the solution to shuffle a string based on a given array of indices because it allows for simultaneous iteration over the string and the indices array, pairing each character with its corresponding new position. This approach significantly enhances code efficiency, readability, and maintainability by enabling a direct mapping of characters to their shuffled positions with minimal overhead and without the need for separate loops or complex indexing.