Advertisement
Todorov_Stanimir

02. Special Subsequence JS Essentials Retake-06 August 2019

Aug 29th, 2019
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function specialSubsequence(input) {
  2.     let currentSpecialSubSequence = [];
  3.     let maxSpecialSubsequence = [];
  4.     let isPreviosePositiveNumber = false;
  5.     let isPreviouseNegativeNumber = false;
  6.     let i = 0;
  7.  
  8.     while (i < input.length) {
  9.         if (input[i] > 0) {
  10.             isPreviosePositiveNumber = true;
  11.             currentSpecialSubSequence.push(input[i]);
  12.             break;
  13.         } else if (input[i] < 0) {
  14.             isPreviouseNegativeNumber = true;
  15.             currentSpecialSubSequence.push(input[i]);
  16.             break;
  17.         }
  18.         i++;
  19.     }
  20.  
  21.     for (index = i + 1; index < input.length; index++) {
  22.         if (isPreviosePositiveNumber && input[index] < 0) {
  23.             isPreviosePositiveNumber = false;
  24.             isPreviouseNegativeNumber = true;
  25.             currentSpecialSubSequence.push(input[index]);
  26.             if (maxSpecialSubsequence.length < currentSpecialSubSequence.length) {
  27.                 maxSpecialSubsequence = [];
  28.                 maxSpecialSubsequence = currentSpecialSubSequence.slice(0);
  29.             }
  30.         } else if (isPreviouseNegativeNumber && input[index] > 0) {
  31.             isPreviosePositiveNumber = true;
  32.             isPreviouseNegativeNumber = false;
  33.             currentSpecialSubSequence.push(input[index]);
  34.             if (maxSpecialSubsequence.length < currentSpecialSubSequence.length) {
  35.                 maxSpecialSubsequence = [];
  36.                 maxSpecialSubsequence = currentSpecialSubSequence.slice(0);
  37.             }
  38.         } else {
  39.             currentSpecialSubSequence = [];
  40.             while (input[index] === 0) {
  41.                 index++;
  42.             }
  43.             if (input[index] > 0) {
  44.                 isPreviosePositiveNumber = true;
  45.                 isPreviouseNegativeNumber = false;
  46.                 currentSpecialSubSequence.push(input[index]);
  47.             } else {
  48.                 isPreviouseNegativeNumber = true;
  49.                 isPreviosePositiveNumber = false;
  50.                 currentSpecialSubSequence.push(input[index]);
  51.             }
  52.         }
  53.     }
  54.  
  55.     console.log(maxSpecialSubsequence.length > 0
  56.         ? `The longest sequence is ${maxSpecialSubsequence.join(', ')}`
  57.         : `In ${input.join(', ')} no special sequence is found`)
  58. }
  59.  
  60. specialSubsequence([0, 1, -2, 1, -1, 2, 0, 0]);
  61. specialSubsequence([-1, -1, -1, 1, -1])
  62. specialSubsequence([1, 2, 3, 4, 5]);
  63. // The result is:
  64. // The longest sequence is 1, -2, 1, -1, 2
  65. // The longest sequence is -1, 1, -1
  66. // In 1, 2, 3, 4, 5 no special sequence is found
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement