mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 07:29:47 +08:00

* chore: Switch to Node 20 + Vitest * chore: migrate to vitest mock functions * chore: code style (switch to prettier) * test: re-enable long-running test Seems the switch to Node 20 and Vitest has vastly improved the code's and / or the test's runtime! see #1193 * chore: code style * chore: fix failing tests * Updated Documentation in README.md * Update contribution guidelines to state usage of Prettier * fix: set prettier printWidth back to 80 * chore: apply updated code style automatically * fix: set prettier line endings to lf again * chore: apply updated code style automatically --------- Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
34 lines
731 B
JavaScript
34 lines
731 B
JavaScript
/**
|
|
* @function isPalindromeIntegerNumber
|
|
* @param { Number } x
|
|
* @returns {boolean} - input integer is palindrome or not
|
|
*
|
|
* time complexity : O(log_10(N))
|
|
* space complexity : O(1)
|
|
*/
|
|
export function isPalindromeIntegerNumber(x) {
|
|
if (typeof x !== 'number') {
|
|
throw new TypeError('Input must be a integer number')
|
|
}
|
|
// check x is integer
|
|
if (!Number.isInteger(x)) {
|
|
return false
|
|
}
|
|
|
|
// if it has '-' it cannot be palindrome
|
|
if (x < 0) return false
|
|
|
|
// make x reverse
|
|
let reversed = 0
|
|
let num = x
|
|
|
|
while (num > 0) {
|
|
const lastDigit = num % 10
|
|
reversed = reversed * 10 + lastDigit
|
|
num = Math.floor(num / 10)
|
|
}
|
|
|
|
// compare origin x and reversed are same
|
|
return x === reversed
|
|
}
|