LeetCode重新排列字符串使用JavaScript解决|前端学算法

133 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情

有人相爱,有人夜里开车看海,我是LeetCode第一题都做不出来

重新排列字符串

给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。

示例 1: image.png

输入: 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('');
};

image.png

知识点

  • charAt: charAt() 方法可返回指定位置的字符。

字符串中的字符从左向右索引,第一个字符的索引值为 0,最后一个字符的索引值为 stringName.length - 1。如果指定的 index 值超出了该范围,则返回一个空字符串。

  • join: 通过指定的分隔符把数组中的所有元素链接成一个字符串。