按给定顺序对字符串中的字符进行排序

问题描述 投票:0回答:1

给定一个

arr
大小的整数数组
n
,顺序从 1 到
n
任意,以及一个
str
大小的字符串
n
,重新排列 str 中的字符的最有效方法是什么它们是按照
arr
中声明的顺序放置的? 例如

str = 'SAMPLE';
arr = [2, 5, 1, 4, 6, 3]

应该回来

'MSEPAL'

我实现了这个功能:

function rearrange(str, arr) {
        let res;
        for (let i = 1; i <= arr.length; i++) {
            res += str.charAt(arr.indexOf(i));
        }
        return res;
    }

有没有一种方法可以在没有 for 循环的情况下以函数式的方式做到这一点?

javascript algorithm functional-programming
1个回答
-1
投票

这种重新排列可以在 Python 中使用函数方法(使用

zip()
函数和列表理解)来完成。具体方法如下:

str_ = 'SAMPLE'
arr = [2, 5, 1, 4, 6, 3]

result = ''.join(char for _, char in sorted(zip(arr, str_)))

print(result)

此代码根据

str_
列表中提供的顺序对
arr
中的字符重新排序。
zip()
函数将每个字符与其关联的顺序相关联,然后
sorted()
函数根据顺序值对这些配对进行排序。最后,
.join()
将排序后的字符合并回字符串。结果将是:

'MSEPAL'
© www.soinside.com 2019 - 2024. All rights reserved.