File tree Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @function isPalindromeIntegerNumber
3
+ * @param { Number } x
4
+ * @returns {boolean } - input integer is palindrome or not
5
+ *
6
+ * time complexity : O(log_10(N))
7
+ * space complexity : O(1)
8
+ */
9
+ export function isPalindromeIntegerNumber ( x ) {
10
+ if ( typeof x !== 'number' ) {
11
+ throw new TypeError ( 'Input must be a integer number' )
12
+ }
13
+ // check x is integer
14
+ if ( ! Number . isInteger ( x ) ) {
15
+ return false
16
+ }
17
+
18
+ // if it has '-' it cannot be palindrome
19
+ if ( x < 0 ) return false
20
+
21
+ // make x reverse
22
+ let reversed = 0
23
+ let num = x
24
+
25
+ while ( num > 0 ) {
26
+ const lastDigit = num % 10
27
+ reversed = reversed * 10 + lastDigit
28
+ num = Math . floor ( num / 10 )
29
+ }
30
+
31
+ // compare origin x and reversed are same
32
+ return x === reversed
33
+ }
Original file line number Diff line number Diff line change
1
+ import { isPalindromeIntegerNumber } from '../isPalindromeIntegerNumber'
2
+
3
+ describe ( 'isPalindromeIntegerNumber' , ( ) => {
4
+ it ( 'expects to return true when length of input is 1' , ( ) => {
5
+ expect ( isPalindromeIntegerNumber ( 6 ) ) . toEqual ( true )
6
+ } )
7
+
8
+ it ( 'expects to return true when input is palindrome' , ( ) => {
9
+ expect ( isPalindromeIntegerNumber ( 121 ) ) . toEqual ( true )
10
+ expect ( isPalindromeIntegerNumber ( 12321 ) ) . toEqual ( true )
11
+ expect ( isPalindromeIntegerNumber ( 1221 ) ) . toEqual ( true )
12
+ } )
13
+
14
+ it ( 'expects to return false when input is not palindrome' , ( ) => {
15
+ expect ( isPalindromeIntegerNumber ( 189 ) ) . toEqual ( false )
16
+ } )
17
+
18
+ it ( 'expects to return false when input is minus' , ( ) => {
19
+ expect ( isPalindromeIntegerNumber ( - 121 ) ) . toEqual ( false )
20
+ expect ( isPalindromeIntegerNumber ( - 12321 ) ) . toEqual ( false )
21
+ } )
22
+
23
+ it ( 'expects to return false when input is not integer number' , ( ) => {
24
+ expect ( isPalindromeIntegerNumber ( 123.456 ) ) . toEqual ( false )
25
+ } )
26
+
27
+ it ( 'expects to throw error when input is not a number' , ( ) => {
28
+ expect ( ( ) => isPalindromeIntegerNumber ( undefined ) ) . toThrowError ( )
29
+ expect ( ( ) => isPalindromeIntegerNumber ( { key : 'val' } ) ) . toThrowError ( )
30
+ expect ( ( ) => isPalindromeIntegerNumber ( [ ] ) ) . toThrowError ( )
31
+ } )
32
+ } )
You can’t perform that action at this time.
0 commit comments