答案对于任何给定输入均应有效

时间:2018-12-12 07:53:31

标签: javascript sorting ascii bubble-sort

编写一个将句子作为输入并输出排序的句子的函数。

1。单词的每个字符应按字母顺序排列

  1. 单词的字符数应按升序排列

注意:-单词只能包含小写字母

示例:

输入str =“她和他一起住在一个小公寓里”

输出=“在他身上,他击中了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"));

错误消息是“答案对于任何给定的输入均应有效。”

1 个答案:

答案 0 :(得分:0)

进一步思考后,很明显他们的挑战没有遵循自己的规则。它明确指出:

  

单词只能有小写字母

但是,它通过代码运行(带有标点符号):

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,而不是这种大杂烩。