Palindrome Number

来源:互联网 发布:华瑞网研域名多少钱 编辑:程序博客网 时间:2024/05/16 01:28

Determine whether an integer is a palindrome. Do this without extra space. 

Some hints:

Could negative integers be palindromes? (ie, -1) 

If you are thinking of converting the integer to string, note the restriction of using extra space. 

You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case? 

There is a more generic way of solving this problem. 

方法一(不推荐):利用Reverse Integer的方法,求的转换后的数字,然后比较是否相等。提示说这样有溢出的问题,想了想感觉问题不大。因为首先输入必须是一个合法的int值,负数直接返回false,对于正数,假设输入的int是一个palindrome,reverse之后依然不会溢出,所以正常返回true;所以如果转换后溢出了,证明肯定不是palindrome,溢出后的数字跟输入一般不相同(想不出相等的情况-_-!,求指点),所以返回了false。 

方法二:从两头依次取数字比较,向中间推进。

C代码如下:

bool isPalindrome(int x) {    int i, j;if(x < 0)return 0;else if(x < 10)return 1;int base = 1;int save;save = x;for(i = 0; x / base >= 10 ; i++)base *= 10;for(j = 0; i >= j; j++){if(save / base != x % 10)return 0;else{save %= base;x /= 10;base /= 10;i--;}}return 1;}

小结:

(1)注意所有可能发生的变量溢出的情况,如果第一个for循环里的终止条件是x/base != 0,则x足够大时base可能溢出。

(2)如果需要一直用到10的次方这样的数,可以一开始就算出来并保存在变量里,而不必每次都调用pow()函数,减少计算量。





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机支架不粘了怎么办 赌博把房子输了怎么办 当发现老公有外遇时怎么办 led灯带中间不亮怎么办 飘窗的天花板凸怎么办 一受委屈就爱哭怎么办 6岁儿童叛逆期怎么办 孩子高一了厌学怎么办 除上有肥胖纹怎么办 6岁不爱写作业怎么办 初中孩子不爱写作业怎么办 孩子上课走神写作业慢怎么办 孩子作业写得慢怎么办 4岁宝宝不写作业怎么办 小孩作业写得慢怎么办 3岁宝宝不写作业怎么办 小孩不写作业怎么办呀 作业没写完的人怎么办? 孩子不写作业家长该怎么办 做作业做得慢怎么办 高一作业写得慢怎么办 孩子做作业不认真怎么办 孩子不主动做作业怎么办 写作业静不下心怎么办 小孩不写作业怎么办啊 小孩子写作业爱磨蹭怎么办 孩子在学校不写作业怎么办 鳗鱼刺卡在喉咙怎么办 被小鱼刺卡住了怎么办 喉咙上卡了鱼刺怎么办 跟团出去受伤了怎么办 平安易宝冻结了怎么办 车的保险到期没有交怎么办 人保外地险出险怎么办 婚姻经营不下去了怎么办 他不爱我,我该怎么办 没有我你怎么办钢琴版 没有你怎么办严爵歌词 没有羊毛戳针该怎么办 没有我你该怎么办歌词 雌激素低子宫内膜薄怎么办