gpt4 book ai didi

javascript - 整理单词失败,并带有一些测试用例

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:42 26 4
gpt4 key购买 nike

我在某个入口做测试问题如下:
我们将一个句子定义为一个由空格分隔的单词组成的字符串,该字符串以大写字母后跟小写字母和空格,以句点结尾(即,它满足正则表达式^[a-z][a-z]*.$)。我们希望重新排列句子中的单词,以满足以下条件:
每个单词都是按长度升序排列的。
长度相等的词必须按与原句相同的顺序出现。
重新排列的句子必须格式化为满足正则表达式^[a-z][a-z]*.$。
例如,想想猫和帽子这句话首先,单词按长度排序,保持领带的原始顺序:[还有,猫,帽子]现在重新组合句子,应用格式:和猫帽子。
功能描述
在下面的编辑器中完成函数排列。函数必须返回按所述排列的正确格式的句子。
排列具有以下参数:

sentence:  a well formed sentence string

约束条件
2<=|句子|<105
语句满足正则表达式^[a-z][a-z]*.$。
样本输出
sample
我的解决方案如下:
function arrange(sentence) {
sentence = sentence.toLowerCase().substring(0,sentence.length-1).trim();
let sortedTokens = sentence.split(" ").sort((a, b) =>(a.length - b.length));
let joined = sortedTokens.join(" ") + ".";
return joined[0].toUpperCase()+ joined.substring(1);
}

不幸的是,它并没有通过以下所有测试(我想我遗漏了一些角落案例):
test
由于测试用例输入被禁止访问,我无法找出原因?

最佳答案

Array.prototype.sort在相等的情况下不稳定
由于user3707125建议的Array.prototype.sort不稳定,并且它在等式的情况下给出了意外的顺序,所以我使用了以下命令,它成功了:

function arrange(sentence) {
Array.prototype.sort = function(cmp) {
cmp = !!cmp ? cmp : (a, b) => {
if (a < b) return -1;
if (a > b) return 1;
return 0;
};
let stabilizedThis = this.map((el, index) => [el, index]);
let stableCmp = (a, b) => {
let order = cmp(a[0], b[0]);
if (order != 0) return order;
return a[1] - b[1];
}
stabilizedThis.sort(stableCmp);
for (let i=0; i<this.length; i++) {
this[i] = stabilizedThis[i][0];
}
return this;
}
sentence = sentence.toLowerCase().substring(0,sentence.length-1).trim();
let sortedTokens = sentence.split(" ").sort((a, b) =>(a.length - b.length));
let joined = sortedTokens.join(" ") + ".";
return joined[0].toUpperCase()+ joined.substring(1);
}

关于javascript - 整理单词失败,并带有一些测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com