Skip to content

Commit 7e23e1e

Browse files
feat(maths): is palindrome number (TheAlgorithms#118)
* Is Palindrome Number * Is Palindrome Number update * Added tests and updated Directory.md * updated Directory.md * feat(maths): improvements & resolved changes * feat: improves algorithm & adjusts tests * feat: documents limitation --------- Co-authored-by: Fatima <[email protected]>
1 parent 2ac83c8 commit 7e23e1e

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

DIRECTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* [Is Even](https://github.com/TheAlgorithms/TypeScript/blob/HEAD/maths/is_even.ts)
3030
* [Is Leap Year](https://github.com/TheAlgorithms/TypeScript/blob/HEAD/maths/is_leap_year.ts)
3131
* [Is Odd](https://github.com/TheAlgorithms/TypeScript/blob/HEAD/maths/is_odd.ts)
32+
* [Is Palindrome](https://github.com/TheAlgorithms/TypeScript/blob/HEAD/maths/is_palindrome.ts)
3233
* [Is Square Free](https://github.com/TheAlgorithms/TypeScript/blob/HEAD/maths/is_square_free.ts)
3334
* [Lowest Common Multiple](https://github.com/TheAlgorithms/TypeScript/blob/HEAD/maths/lowest_common_multiple.ts)
3435
* [Perfect Square](https://github.com/TheAlgorithms/TypeScript/blob/HEAD/maths/perfect_square.ts)

maths/is_palindrome.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* A function to see if a number is a palindrome.
3+
* Note that if the reversed number is larger than MAX_SAFE_INTEGER, rounding errors may occur and the result may be incorrect.
4+
* Time Complexity: O(log(n))
5+
*
6+
* @param number The input number.
7+
* @return {boolean} Wether the number is a Palindrome or not.
8+
*/
9+
export const IsPalindrome = (number: number): boolean => {
10+
if (number < 0 || (number % 10 === 0 && number !== 0)) {
11+
return false;
12+
}
13+
14+
let reversed: number = 0;
15+
while (number > reversed) {
16+
reversed = reversed * 10 + (number % 10);
17+
number = Math.floor(number / 10);
18+
}
19+
20+
return number === reversed || number === Math.floor(reversed / 10);
21+
};

maths/test/is_palindrome.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { IsPalindrome } from "../is_palindrome";
2+
3+
describe("IsPalindrome", () => {
4+
test.each([[5, true], [1234, false], [12321, true], [31343, false]])(
5+
"correct output for %i",
6+
(nums, expected) => {
7+
expect(IsPalindrome(nums)).toBe(expected);
8+
},
9+
);
10+
});

0 commit comments

Comments
 (0)