持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情
有人相爱,有人夜里开车看海,我是LeetCode第一题都做不出来
重新排列字符串
给你一个字符串 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: 通过指定的分隔符把数组中的所有元素链接成一个字符串。