From 22cc7412c327145a1ffd573ea7e73bb4b76fd2e5 Mon Sep 17 00:00:00 2001 From: sarthakgupta1907-cell Date: Sat, 7 Nov 2026 01:58:29 +0530 Subject: [PATCH] feat: add palindrome number algorithm --- Maths/PalindromeNumber.js | 23 +++++++++++++++ Maths/test/PalindromeNumber.test.js | 43 +++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 Maths/PalindromeNumber.js create mode 100644 Maths/test/PalindromeNumber.test.js diff --git a/Maths/PalindromeNumber.js b/Maths/PalindromeNumber.js new file mode 100644 index 0000000000..2b7d5214c4 --- /dev/null +++ b/Maths/PalindromeNumber.js @@ -0,0 +1,23 @@ +/** + * @function isPalindromeNumber + * @description Checks whether a given integer is a palindrome. + * A palindrome number reads the same forwards and backwards. + * Negative numbers are not palindromes. + * @param {number} n - An integer + * @returns {boolean} - True if n is a palindrome number, false otherwise + * @see https://en.wikipedia.org/wiki/Palindromic_number + * @example isPalindromeNumber(121) => true + * @example isPalindromeNumber(1221) => true + * @example isPalindromeNumber(-121) => false + * @example isPalindromeNumber(123) => false + */ +const isPalindromeNumber = (n) => { + if (!Number.isInteger(n)) { + throw new TypeError('Input must be an integer') + } + if (n < 0) return false + const str = String(n) + return str === str.split('').reverse().join('') +} + +export { isPalindromeNumber } diff --git a/Maths/test/PalindromeNumber.test.js b/Maths/test/PalindromeNumber.test.js new file mode 100644 index 0000000000..5ac4e902fa --- /dev/null +++ b/Maths/test/PalindromeNumber.test.js @@ -0,0 +1,43 @@ +import { isPalindromeNumber } from '../PalindromeNumber.js' + +describe('isPalindromeNumber', () => { + test('121 is a palindrome number', () => { + expect(isPalindromeNumber(121)).toBe(true) + }) + + test('1221 is a palindrome number', () => { + expect(isPalindromeNumber(1221)).toBe(true) + }) + + test('12321 is a palindrome number', () => { + expect(isPalindromeNumber(12321)).toBe(true) + }) + + test('0 is a palindrome number', () => { + expect(isPalindromeNumber(0)).toBe(true) + }) + + test('1 is a palindrome number', () => { + expect(isPalindromeNumber(1)).toBe(true) + }) + + test('123 is NOT a palindrome number', () => { + expect(isPalindromeNumber(123)).toBe(false) + }) + + test('10 is NOT a palindrome number', () => { + expect(isPalindromeNumber(10)).toBe(false) + }) + + test('negative numbers are NOT palindromes', () => { + expect(isPalindromeNumber(-121)).toBe(false) + }) + + test('throws TypeError for float input', () => { + expect(() => isPalindromeNumber(1.5)).toThrow(TypeError) + }) + + test('throws TypeError for string input', () => { + expect(() => isPalindromeNumber('121')).toThrow(TypeError) + }) +})