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