【发布时间】:2017-10-08 04:30:15
【问题描述】:
我被困在两个小时的编码挑战中,需要帮助。完整说明如下:
给定一个字符串数组,生成一个字符串如下:
当数组中有多个字符串时重复以下步骤:
在数组中找到最短的字符串(如果有几个相同长度的字符串取最左边的那个);
在其余字符串中找到最短的字符串(如果有几个字符串 一样长取最右边的那个);
从数组中提取选中的字符串;
将它们连接的结果(第二个字符串应该添加到第一个字符串的末尾)附加到数组的右端。
算法完成后,数组中会剩下一个字符串。返回那个字符串。
我的解决方案尝试
function concatenationProcess(init) {
var shortestString = init[0];
var shorterString = init[0];
var appendedString = "";
while (init.length > 0) {
for (i = init.length - 1; i >= 0; i--) {
if (init[i].length <= shortestString.length) {
shortestString = init[i];
}
}
var newArray = init;
newArray = init.splice(init.indexOf(shortestString), 1)
for (i = 0; i < init.length; i++) {
if (init[i].length <= shorterString.length) {
shorterString = init[i];
}
}
init.splice(init.indexOf(shorterString), 1)
var newInit = init;
console.log(shorterString, "shorter string")
appendedString = shortestString + shorterString
init.push(appendedString)
console.log(init)
}
}
【问题讨论】:
-
你得到了什么结果?
-
卡在无限循环中 对于 concatenationProcess([ "thinking", "whatface", "cantare", "wait", "jay", "cutler"]) 结果是 jaywait
-
the result is jaywait- 不,因为你需要重新处理数组直到它有一个元素
标签: javascript arrays string