
- Javascript Basics Tutorial
- Javascript - Home
- Javascript - Overview
- Javascript - Syntax
- Javascript - Enabling
- Javascript - Placement
- Javascript - Variables
- Javascript - Operators
- Javascript - If...Else
- Javascript - Switch Case
- Javascript - While Loop
- Javascript - For Loop
- Javascript - For...in
- Javascript - Loop Control
- Javascript - Functions
- Javascript - Events
- Javascript - Cookies
- Javascript - Page Redirect
- Javascript - Dialog Boxes
- Javascript - Void Keyword
- Javascript - Page Printing
- JavaScript Objects
- Javascript - Objects
- Javascript - Number
- Javascript - Boolean
- Javascript - Strings
- Javascript - Arrays
- Javascript - Date
- Javascript - Math
- Javascript - RegExp
- Javascript - HTML DOM
- JavaScript Advanced
- Javascript - Error Handling
- Javascript - Validations
- Javascript - Animation
- Javascript - Multimedia
- Javascript - Debugging
- Javascript - Image Map
- Javascript - Browsers
- JavaScript Useful Resources
- Javascript - Questions And Answers
- Javascript - Quick Guide
- Javascript - Functions
- Javascript - Resources
Determining whether numbers form additive sequence in JavaScript
Additive Numbers
Additive number is a number string whose digits can form additive sequence.
A valid additive sequence should contain at least three numbers. Except for the first two numbers, each subsequent number in the sequence must be the sum of the preceding two. Given a string containing only digits '0'−'9', write a function to determine if it's an additive number.
Note − Numbers in the additive sequence cannot have leading zeros, so sequence 1, 2, 03 or 1, 02, 3 is invalid.
For example −
The string "199100199" is additive number because, The additive sequence is − 1, 99, 100, 199 −
1 + 99 = 100, 99 + 100 = 199
Example
The code for this will be −
const str = "199100199"; const isAdditiveNumber = (numStr) => { if(numStr.length < 3) return false; let str = ""; let seen = true; for(let i = numStr.length − 1; i > 1; i−−){ str = `${numStr[i]}${str}`; if(numStr[i] === "0") continue; let s = str; let s2 = numStr[i − 1] for(let j = i − 2; j >= 0; j−−){ if(`${s2}`.startsWith("0") && s2.length > 1){ s2 = `${numStr[j]}${s2}` seen = false; } else if(parseInt(s) >= parseInt(s2)){ let diff = s − s2; if(numStr.slice(0, j + 1).endsWith(diff)){ s = s2; s2 = diff; let ind = Math.floor(Math.log10(diff)); ind = ind < 0 ? 0 : ind j −= ind; seen = true; }else { s2 = `${numStr[j]}${s2}` seen = false; } }else{ seen = false; break; } } if(seen) return seen; }; return seen; }; console.log(isAdditiveNumber(str));
Output
And the output in the console will be −
true
- Related Articles
- Determining happy numbers using recursion JavaScript
- Can array form consecutive sequence - JavaScript
- Form a sequence out of an array in JavaScript
- Expressing numbers in expanded form - JavaScript
- Finding nth digit of natural numbers sequence in JavaScript
- Finding value of a sequence for numbers in JavaScript
- Determining isomorphic strings JavaScript
- Checking if two arrays can form a sequence - JavaScript
- Determining full house in poker - JavaScript
- Determining a pangram string in JavaScript
- Determining beautiful number string in JavaScript
- Check if the elements of the array can be rearranged to form a sequence of numbers or not in JavaScript
- Length of the longest possible consecutive sequence of numbers in JavaScript
- Determining rightness of a triangle – JavaScript
- Determining rank on basis of marks in JavaScript

Advertisements