答案应该对任何给定的输入有效
The answer should be valid for any given input
编写一个函数,将一个句子作为输入并输出一个排序后的句子。
1.Each单词的字符要按字母顺序排列
- 单词应根据其字符数按升序排列
注意:- Word 只能包含小写字母
示例:
输入 str = "she lives with him in a small apartment"
输出="a in ehs him hitw eilsv allms aaemnprtt"
function makeAlphabetSentenceSort(str) {
var word = str.split(' ');
for (var j = 0; j < word.length; j++) {
word[j] = word[j].split('').sort().join('');
}
for (var h = 0; h < word.length - 1; h++) {
for (var i = 0; i < word.length - h - 1; i++) {
if (String(word[i]).length > String(word[i + 1]).length) {
var temp = word[i];
word[i] = word[i + 1];
word[i + 1] = temp;
}
}
}
return word.join(' ');
}
console.log(makeAlphabetSentenceSort("she lives with him in a small apartment"));
错误消息是 "The answer should be valid for any given input."
经过进一步思考,很明显他们的挑战并没有遵循他们自己的规则。它明确指出:
Word only can have lowercase letters
然而,它通过代码运行这个(带标点符号):
he was curious about how it would taste, so he took a small bite.
更糟糕的是,它需要以下输出,将 how
放在 saw
之前,即使 how
出现在 saw
之后:
a eh it os eh how asw koot .beit allms dlouw abotu ,aestt ciorsuu
因此,为了能够通过此挑战,您还需要将相同长度的单词相互交换。
NodeJS 解决方案
以下在 NodeJS 中产生了正确的结果,但在浏览器中却没有,事实上,sort()
在不同的浏览器中给出了不同的结果!
function makeAlphabetSentenceSort(str) {
var word = str.split(' ');
for (var j = 0; j < word.length; j++) {
word[j] = word[j].split('').sort().join('');
}
return word.sort((a, b) => a.length - b.length).join(' ');
}
console.log(makeAlphabetSentenceSort('he was curious about how it would taste, so he took a small bite.'));
然后我读到了为什么排序如此不可靠,这篇文章是一个很好的资源,不幸的是,其中的解决方案提供了可靠的结果,但不是这个挑战所期望的那样。
https://medium.com/@fsufitch/is-javascript-array-sort-stable-46b90822543f
挑战
http://ccc.fidenz.com/en/challenges/challenges/challenge--86
外卖
这是一个设计得很糟糕的挑战,你真的应该把精力集中在一个更好的网站上来练习编程,比如 HackerRank,而不是这个大杂烩。
编写一个函数,将一个句子作为输入并输出一个排序后的句子。
1.Each单词的字符要按字母顺序排列
- 单词应根据其字符数按升序排列
注意:- Word 只能包含小写字母
示例:
输入 str = "she lives with him in a small apartment"
输出="a in ehs him hitw eilsv allms aaemnprtt"
function makeAlphabetSentenceSort(str) {
var word = str.split(' ');
for (var j = 0; j < word.length; j++) {
word[j] = word[j].split('').sort().join('');
}
for (var h = 0; h < word.length - 1; h++) {
for (var i = 0; i < word.length - h - 1; i++) {
if (String(word[i]).length > String(word[i + 1]).length) {
var temp = word[i];
word[i] = word[i + 1];
word[i + 1] = temp;
}
}
}
return word.join(' ');
}
console.log(makeAlphabetSentenceSort("she lives with him in a small apartment"));
错误消息是 "The answer should be valid for any given input."
经过进一步思考,很明显他们的挑战并没有遵循他们自己的规则。它明确指出:
Word only can have lowercase letters
然而,它通过代码运行这个(带标点符号):
he was curious about how it would taste, so he took a small bite.
更糟糕的是,它需要以下输出,将 how
放在 saw
之前,即使 how
出现在 saw
之后:
a eh it os eh how asw koot .beit allms dlouw abotu ,aestt ciorsuu
因此,为了能够通过此挑战,您还需要将相同长度的单词相互交换。
NodeJS 解决方案
以下在 NodeJS 中产生了正确的结果,但在浏览器中却没有,事实上,sort()
在不同的浏览器中给出了不同的结果!
function makeAlphabetSentenceSort(str) {
var word = str.split(' ');
for (var j = 0; j < word.length; j++) {
word[j] = word[j].split('').sort().join('');
}
return word.sort((a, b) => a.length - b.length).join(' ');
}
console.log(makeAlphabetSentenceSort('he was curious about how it would taste, so he took a small bite.'));
然后我读到了为什么排序如此不可靠,这篇文章是一个很好的资源,不幸的是,其中的解决方案提供了可靠的结果,但不是这个挑战所期望的那样。
https://medium.com/@fsufitch/is-javascript-array-sort-stable-46b90822543f
挑战
http://ccc.fidenz.com/en/challenges/challenges/challenge--86
外卖
这是一个设计得很糟糕的挑战,你真的应该把精力集中在一个更好的网站上来练习编程,比如 HackerRank,而不是这个大杂烩。