Home > Blockchain >  find sequence of numbers in a string
find sequence of numbers in a string

Time:10-02

I have a string of numbers, and in it, there is always a random sequence, like:

891011 -> 8, 9, 10, 11
123124 -> 123, 124

how can i find the sequence? my current code is this:

var digits = [8, 9, 1, 0, 1, 1];
var number;

for (var j = 0; j < digits.length; j  ) {
  number = digits.slice(0, j   1).join("");
  if (
    Number(number) === Number(digits.slice(j, number.length).join("")) &&
    digits
    .join("")
    .match(new RegExp(".{1,"   number.length   "}", "g"))
    .every(function(num, index) {
      return index === digits.length - 1 || num < digits[index   1];
    })
  ) {
    break;
  }
}

console.log(number)

CodePudding user response:

You can increment the number of digits of the starting number and see if we can generate a matching output with consecutive numbers. Try like below:

const findSequence = (input) => {
  // starting number cannot be more than half of the length
  let maxLengthOfStartingNumber = input.length / 2;
  for(let i = 1; i <= maxLengthOfStartingNumber; i  ) {
    // starting number can be a number with a few digits
    let startingNumber = parseInt(input.substring(0, i));
    // data holder for consecutive numbers we generate
    let generatedNumbers = [startingNumber]
    // current string we create by concatinating generated numbers
    let currentString = startingNumber.toString();
    // we can generate integers until we surpass the length of the actual input and check
    while(currentString.length < input.length){
      const nextNumber = generatedNumbers[generatedNumbers.length-1] 1;
      generatedNumbers.push(nextNumber)
      currentString  = nextNumber;
    }
    // check whether we could generate a string with consecutive numbers which matches with the input
    if(currentString === input){
      return generatedNumbers;
    }
  }
  // input is invalid and return null
  return null;
}

const testInputs = ["891011", "123124", "9991000", "123454"]

testInputs.forEach(testInput => {
  console.log(findSequence(testInput));
})

  • Related