给定一个
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 循环的情况下以函数式的方式做到这一点?
这种重新排列可以在 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'