huyc

导航

整数回文验证

去笔试的时候,遇到一个回文题,想了好久,主要就是因为题目说验证一个int类型数是否为回文,之前写过却忘了,真是杯具,这次要写下来杜绝忘记。

回文都是老题了,但是之前都是在说那啥字符串的回文,把首尾去掉,递归验证什么的,整数回文自然不应该用字符串那套,应该用堆栈。

比如123321,一步步从后面出栈,就能得到一个123,两个数相等时就表示是回文了。

如果是12321的话,堆栈卸出来123,后面这个数比较大时要么入栈一个3,要么出栈一个3,也就回文了。

递归的解析也差不多,那个的数据结构叫做双头队列,头尾切掉,判断到最后一个元素,要么是字符,要么是空,只是整数要直接去掉最高位好像有点困难,当然也不是不行,用对数函数就可以。

再来个代码则个:

#include <stdio.h>
int main(){
int d1 = 0, d2;
while(1){
scanf("%d", &d1);
d2 = 0;
do{
int t;
t = d1%10;
d1 /= 10;
d2 *= 10;
d2 += t;
if(d1 < d2){
d2 /= 10;
}
}while(d1 > d2);
if(d1 == d2){
printf("match\n");
}else{
printf("unmatch\n");
}
}
return 0;
}



posted on 2011-10-11 12:36  huyc  阅读(505)  评论(0编辑  收藏  举报