javascript - 为什么我的反向数组函数的输出与输入相同?
问题描述
我想写一个反向数组函数,我遇到了问题。编译器说我的输入和我的输出是一样的。
为什么会这样?
要求:
不要为另一个数组分配额外的空间,您必须通过使用 O(1) 额外内存就地修改输入数组来做到这一点。
示例 1:
输入:
["h","e","l","l","o"]
输出:["o","l","l","e","h"]
示例 2:
输入:
["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]
这是我的 JS:
var reverseString = function(str) {
var nowArray = [];
nowArray.push(str);
var newArray = [];
for(let i=nowArray.length-1, k=0; i>=0; i--, k++) {
newArray[k] = nowArray[nowArray.length-1];
nowArray.length--;
}
console.log(newArray);
};
reverseString( ["h","e","l","l","o"]) // Should return["o","l","l","e","h"]
解决方案
您将整个字符串推送到nowArray
而不是单个字符。相反,只需var nowArray = str.split("")
获取字符数组即可。
var reverseString = function(str) {
var nowArray = str.split("");
var newArray = [];
for (let i = nowArray.length - 1, k = 0; i >= 0; i--, k++) {
newArray[k] = nowArray[nowArray.length - 1];
nowArray.length--;
}
console.log(newArray);
};
reverseString("hello");
此外,您将字符数组而不是字符串传递给reverseString
函数。
此外,由于您将字符串拆分为nowArray
,因此您可以消除第二个数组,并仅使用该数组。这也可以让您将迭代减半。
var reverseString = function(str) {
var nowArray = str.split("");
for (let i = nowArray.length - 1, k = 0; i > k; i--, k++) {
[nowArray[i], nowArray[k]] = [nowArray[k], nowArray[i]];
}
console.log(nowArray);
};
reverseString("hello");
推荐阅读
- apache-kafka - 用户提供的 Kafka 连接器在哪里?
- javascript - 粘性导航栏的问题
- mongodb - 在 MongoDB 中的数组内的所有对象上添加键值
- javascript - GoJS 嵌套形状定位
- html - html代码的chrome中找不到文件错误
- javascript - 使用 wkhtmltopdf 库打印时如何接收 DOM 元素的高度?
- flutter - 在颤动中处理@build方法中的变量是正确的方法吗?
- javascript - 如何使用一些自定义验证来验证反应输入字段
- python - 如何刻意营造腐败形象?
- flutter - 在 PaginatedDataTabble 上添加搜索功能