Timkor

maxWord

Jan 16th, 2021 (edited)
900
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. завдання про рядки
  2. https://zero.p2p.shpp.me/tasks/45_1_slova2.html
  3. /* Найбільше слово в рядку
  4.  
  5. Спитайте людину про рядок і виведіть на екран найбільше слово в рядку.
  6. */
  7.  
  8. Один із варіантів рішення:
  9.  
  10. отримаємо рядок.
  11. йдемо по кожному символу рядка та обробляємо такі стадії :
  12.  
  13. 1 слово триває (або почалося) = додаємо по символу
  14. 2 слово скінчилося (або кінець рядку) = порівнюємо та зберігаємо макс результат, обнуляємо поточне слово
  15.  
  16. виводимо результат
  17.  
  18.  
  19.  
  20. Псевдокод:
  21.  
  22. отримати рядок
  23.  
  24. перебирати всі символи у рядку
  25.    
  26.     якщо поточнийСимвол == буква  // тоді треба у будь якому разі додати його до поточного слова
  27.             поточнеСлово += поточнийСимвол
  28.    
  29.     якщо поточнийСимвол !== буква  а попереднійСимвол == буква  (АБО поточний буква остання у рядку) // тоді слово скінчилося
  30.      
  31.              обрати макс
  32.              обнулити поточнеСлово
  33.              
  34. вивести макс
  35.    
  36.  
  37. //  код
  38.        
  39. let row = '  a  bcd     y efgh gkl';
  40. console.log(row);
  41. console.log(row.length);
  42.  
  43. let maxWord = ''; // довгіше слово
  44. let word = ''; // поточне слово . Краща назва була б currentWord
  45.  
  46. for (let i = 0; i < row.length; i++) {
  47.     if (isLetter(row[i])) {                     // якщо поточний символ буква
  48.         word += row[i];                         // то додаємо його до слова у будь якому разі
  49.     }  
  50.  
  51.     if ((!isLetter(row[i]) && i > 0 && isLetter(row[i - 1])) // якщо поточний не буква  та не нульовий  та якщо попередній буква - значить слово щойно скінчилося
  52.      || i === row.length - 1) {       // "або якщо поточний є останнім у строці" - тоді теж значить слово щойно скінчилося
  53.         console.log(word);            // логування для відлагодження коду
  54.        
  55.         /*if (word.length > maxWord.length) {                // вибір максимального - винесли у функцію для декомпозиції
  56.             maxWord = word;
  57.         }*/
  58.         maxWord = getMaxWord(maxWord, word);
  59.         word = '';                   // скидання поточного слова
  60.     }
  61. }
  62.  
  63. console.log('Max is ' + maxWord);
  64. console.log('Max size is ' + maxWord.length)
  65.  
  66.  
  67. // return true if symb is a latin letter and false vise versa
  68. function isLetter(symb) {
  69.     return ((symb.charCodeAt(0) > 64) && (symb.charCodeAt(0) < 91)) ||
  70.         ((symb.charCodeAt(0) > 96) && (symb.charCodeAt(0) < 123))
  71. }
  72.  
  73. // return word with max length
  74. function getMaxWord(word1, word2) {
  75.     if (word1.length > word2.length) {      // який один символ треба додати щоб з двох рівних значень поверталося перше?
  76.             return word1;
  77.         }
  78.     return word2;
  79. }
  80.  
  81.  
  82. // that`s all, folks)
  83.  
RAW Paste Data