Create palindrome algorithm (#134)

* Create palindrome algorithm

* Update Palindrome.js

Co-authored-by: vinayak <itssvinayak@gmail.com>
This commit is contained in:
Nour B
2020-05-06 10:26:47 +01:00
committed by GitHub
parent 94581a34fa
commit 03b7c6f33b

51
maths/Palindrome.js Normal file
View File

@ -0,0 +1,51 @@
/**
* A palindrome is any string that can be reversed and still be the same.
* An example of one is 'radar', since it is spelled the same even after
* being reversed. One method to check if a
*
* Here's how this works recursively:
*
* Palindrome('radar')
* true && Palindrome('ada')
* true && true && Palindrome('d')
* true && true && true && true
*
* @flow
* @complexity: O(n)
*/
function PalindromeRecursive (string) {
// Base case
if (string.length < 2) return true
// Check outermost keys
if (string[0] !== string[string.length - 1]) {
return false
}
return PalindromeRecursive(string.slice(1, string.length - 1))
}
function PalindromeIterative (string) {
const _string = string
.toLowerCase()
.replace(/ /g, '')
.replace(/,/g, '')
.replace(/'.'/g, '')
.replace(/:/g, '')
.split('')
// A word of only 1 character is already a palindrome, so we skip to check it
while (_string.length > 1) {
if (_string.shift() !== _string.pop()) {
return false
}
}
return true
}
// testing
console.log(PalindromeRecursive('Javascript Community'))
console.log(PalindromeIterative('mom'))