Problem# 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 .
Examples# Example 1# 1
2
3
4
5
6

Input: s = "codeleet" , indices = [ 4 , 5 , 6 , 7 , 0 , 2 , 1 , 3 ]
Output: "leetcode"
Explanation: As shown, "codeleet" becomes "leetcode" after shuffling.
Example 2# 1
2
3
Input: s = "abc" , indices = [ 0 , 1 , 2 ]
Output: "abc"
Explanation: After shuffling, each character remains in its position.
Constraints# s.length == indices.length == n1 <= n <= 100s consists of only lowercase English letters.0 <= indices[i] < nAll values of indices are unique . Solution# Method 1 – Direct Placement# Intuition# Create a result array of the same length as s. For each character, place it at the index specified by indices[i].
Approach# Initialize a result array of length n. For each i, set result[indices[i]] = s[i]. Join and return the result as a string. Code#
Cpp
Java
Python
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
#include <vector>
using namespace std;
class Solution {
public :
string restoreString(string s, vector< int >& indices) {
string res (s.size(), ' ' );
for (int i = 0 ; i < s.size(); ++ i)
res[indices[i]] = s[i];
return res;
}
};
1
2
3
4
5
6
7
8
class Solution {
public String restoreString (String s, int [] indices) {
char [] res = new char [ s.length ()] ;
for (int i = 0; i < s.length (); ++ i)
res[ indices[ i]] = s.charAt (i);
return new String(res);
}
}
1
2
3
4
5
6
class Solution :
def restoreString (self, s, indices):
res = ['' ] * len(s)
for i, c in enumerate(s):
res[indices[i]] = c
return '' . join(res)
Complexity# ⏰ Time complexity: O(n) — n = len(s). 🧺 Space complexity: O(n) — For the result array.