1. 程式人生 > 其它 >1528 重新排列字串(模擬)

1528 重新排列字串(模擬)

技術標籤:力扣

1. 問題描述:

給你一個字串 s 和一個長度相同的整數陣列 indices 。請你重新排列字串 s ,其中第 i 個字元需要移動到 indices[i] 指示的位置。返回重新排列後的字串。

示例 1:

輸入:s = "codeleet", indices = [4,5,6,7,0,2,1,3]
輸出:"leetcode"
解釋:如圖所示,"codeleet" 重新排列後變為 "leetcode" 。

示例 2:

輸入:s = "abc", indices = [0,1,2]

輸出:"abc"
解釋:重新排列後,每個字元都還留在原來的位置上。

示例 3:

輸入:s = "aiohn", indices = [3,1,4,2,0]
輸出:"nihao"

示例 4:

輸入:s = "aaiougrt", indices = [4,0,2,6,7,3,1,5]
輸出:"arigatou"

示例 5:

輸入:s = "art", indices = [1,0,2]
輸出:"rat"

提示:

s.length == indices.length == n

1 <= n <= 100
s 僅包含小寫英文字母。
0 <= indices[i] <n
indices 的所有的值都是唯一的(也就是說,indices 是整數 0 到 n - 1 形成的一組排列)。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/shuffle-string

2. 思路分析:

分析題目可以知道我們只需要將當前的字元放在指定的位置即可,因為使用的是python語言,所以在一開始的時候可以宣告長度為n的字串列表res,這樣可以通過下標修改列表中的值,在for迴圈中遍歷字串s,對於當前的字元放在res列表的指定位置即可

3. 程式碼如下:

from typing import List


class Solution:
    def restoreString(self, s: str, indices: List[int]) -> str:
        # 宣告列表的原因是列表是可以進行修改的
        res = [""] * len(s)
        for i in range(len(s)):
            res[indices[i]] = s[i]
        # 通過join方法將字串列表的元素連線為字串
        return "".join(res)