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:
s.length == indices.length == n
1 <= n <= 100
s
consists of only lowercase English letters.0 <= indices[i] < n
indices
are unique.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)
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.