mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 15:39:42 +08:00
Javascript/Math: editing file name
This commit is contained in:
51
Maths/Palindrome.js
Normal file
51
Maths/Palindrome.js
Normal 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'))
|
Reference in New Issue
Block a user