Skip to content

Commit 5ce425e

Browse files
check if number is a palindrome using O(1) memory
1 parent 0bf81a4 commit 5ce425e

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package ch5PrimitiveTypes
2+
3+
import kotlin.math.log10
4+
5+
fun main(args: Array<String>) {
6+
val testNumber1 = 121
7+
val testNumber2 = 122
8+
val testNumber3 = 2222
9+
10+
println(isPalindrome(testNumber1))
11+
println(isPalindrome(testNumber2))
12+
println(isPalindrome(testNumber3))
13+
}
14+
15+
fun isPalindrome(num: Int): Boolean{
16+
var number = num
17+
val numberOfDigits = log10(number.toDouble()).toInt() + 1
18+
var mask = Math.pow(10.toDouble(), (numberOfDigits - 1).toDouble())
19+
20+
repeat(numberOfDigits/2, {
21+
val mostLeft = (number / mask).toInt()
22+
val mostRight = number.rem(10)
23+
24+
if(mostLeft != mostRight){
25+
return false
26+
}
27+
28+
number = number.rem(mask).toInt()
29+
number /= 10
30+
mask /= 100
31+
})
32+
33+
return true
34+
}
35+

0 commit comments

Comments
 (0)