Ответ должен быть действительным для любого данного ввода - PullRequest
0 голосов
/ 12 декабря 2018

Напишите функцию, которая принимает предложение в качестве ввода и выводит отсортированное предложение.

1.Каждый символ слова должен быть расположен в алфавитном порядке

Слова должны быть расположены в порядке возрастания в зависимости от количества символов

Примечание: - Слово может содержать только строчные буквы

Пример:

Входные данные str ="она живет с ним в маленькой квартире"

Output = "a в ehs его 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"));

Сообщение об ошибке: «Ответ должен быть действительным для любого заданного ввода.»

1 Ответ

0 голосов
/ 12 декабря 2018

После дальнейших размышлений становится ясно, что их задача не соответствует их собственным правилам.В нем четко сказано:

Слово может состоять только из строчных букв

Тем не менее, оно проходит через код (с пунктуацией):

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, а не в этой путанице с мешаниной.

...