重新排列字符串
给你一个字符串 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"
解释: 重新排列后,每个字符都还留在原来的位置上。
解题思路
根据题目我们可以知道,字符串的长度等于数组长度,且数组当前位置的元素就是字符串的位置
所以我们可以创建一个新数组newArr
来存储改变位置后的字符串;遍历字符串s,将newArr[indices[i]]
处设置为s[i]
的值即可
具体步骤入下:
- 第一步: 创建一个新数组newArr,长度等于字符串的长度
- 第二步: 遍历字符串,将数组的第
indices[i]
处元素设置为当前遍历的字符 - 第三步: 将数组转化为字符串后返回
var restoreString = function(s, indices) { const newArr = new Array(s.length); for (let i = 0; i < s.length; ++i) { newArr[indices[i]] = s.charAt(i); } return newArr.join(''); };
知识点
charAt
: charAt() 方法可返回指定位置的字符。
字符串中的字符从左向右索引,第一个字符的索引值为 0,最后一个字符的索引值为 stringName.length - 1
。如果指定的 index 值超出了该范围,则返回一个空字符串。
join
: 通过指定的分隔符把数组中的所有元素链接成一个字符串。