Advertisement
dimipan80

Longest Odd-Even Sequence (on JavaScript)

Dec 16th, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* You are given n numbers in format (a1) (a2) … (an). Write a program to find the longest odd-even alternating
  2.  sub-sequence inside the input sequence. Such subsequence starts at some position with odd number and
  3.  continues with even number, then again odd number, etc. The opposite is also allowed: start with even number,
  4.  then odd number, then even number, etc. The special number 0 (zero) is considered odd and even in the same time.
  5.  The input consists of a single line holding the input sequence of numbers. All numbers are in brackets.
  6.  Spaces can be put anywhere between the numbers, even at the sequence start and at the sequence end.
  7.  Print the length of the longest alternating sub-sequence at the console. */
  8.  
  9. "use strict";
  10.  
  11. function findTheLongestOddEvenSequence(args) {
  12.     var numbers = args[0].split(/[)(\s]+/).filter(Boolean);
  13.     var longestSeqLength = 0;
  14.     var sequenceLength = 0;
  15.     var oddOrder = (Number(numbers[0]) % 2) != 0;
  16.     for (var i = 0; i < numbers.length; i += 1) {
  17.         var isOdd = (Number(numbers[i]) % 2) != 0;
  18.         if (isOdd == oddOrder || Number(numbers[i] == 0)) {
  19.             sequenceLength++;
  20.         } else {
  21.             oddOrder = isOdd;
  22.             sequenceLength = 1;
  23.         }
  24.  
  25.         oddOrder = !oddOrder;
  26.         if (sequenceLength > longestSeqLength) {
  27.             longestSeqLength = sequenceLength;
  28.         }
  29.     }
  30.  
  31.     console.log(longestSeqLength);
  32. }
  33.  
  34. findTheLongestOddEvenSequence(["(3) (22) (-18) (55) (44) (3) (21)"]);
  35. findTheLongestOddEvenSequence(["(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)"]);
  36. findTheLongestOddEvenSequence(["( 2 )  ( 33 ) (1) (4)   (  -1  ) "]);
  37. findTheLongestOddEvenSequence(["(102)(103)(0)(105)  (107)(1)"]);
  38. findTheLongestOddEvenSequence(["(2) (2) (2) (2) (2)"]);
  39. findTheLongestOddEvenSequence(["(2) (5) (4) (0) (6) (0) (0) (5) (0) (0) (0) (1)"]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement