Skip to content

Commit 3ab6646

Browse files
committed
Add palindrome number
1 parent 6aca214 commit 3ab6646

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

palindrome/SConstruct

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
env = Environment(CCFLAGS='-g')
22

33
env.Program('palin_str.cpp')
4+
5+
env.Program('palin_num.cpp')

palindrome/palin_num.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
unsigned int reverse(unsigned int num)
5+
{
6+
unsigned int rev = 0;
7+
8+
while (num)
9+
{
10+
rev = rev * 10 + num % 10;
11+
num /= 10;
12+
}
13+
14+
return rev;
15+
}
16+
17+
bool isPalindrome(int x)
18+
{
19+
if (x < 0) return false;
20+
int div = 1;
21+
while (x / div >= 10) {
22+
div *= 10;
23+
}
24+
while (x != 0) {
25+
int l = x / div;
26+
int r = x % 10;
27+
if (l != r) return false;
28+
// remove l and r
29+
// l -------------- r
30+
x = (x % div) / 10;
31+
// remove l and r 2 digits
32+
div /= 100;
33+
}
34+
return true;
35+
}
36+
37+
int main(int argc, char* argv[])
38+
{
39+
unsigned int num = 616;
40+
41+
printf("%d\n", argv[1] ? reverse(atoi(argv[1])) : reverse(num));
42+
43+
printf("%d\n", argv[1] ? isPalindrome(atoi(argv[1])) : isPalindrome(num));
44+
45+
return 0;
46+
}

0 commit comments

Comments
 (0)