9. Palindrome Number
来源:互联网 发布:unity3d 嵌入网页 编辑:程序博客网 时间:2024/06/05 18:44
题目:
9. Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space.
bool isPalindrome(int x) {。。。}
思路:
(1)获取整数的位数length
(2)得到10的(length/2)次幂,如100,1000......作为除数m;
(3)x/m为商,x%m为余数
(4)x位奇数,则商去除最后一位
(5)去除商后面的所有0,
(6)把余数进行逆转,
(7)比较商和余数的值,相等为true,否则为false
注意:
刚开始把负数也考虑进去了,如-123321也当作了回文,负数不是回文数。
(1)刚开始把负数考虑进回文数的情况
bool isPalindrome(int x) { int t; int odd_even_number;//even number is 0,odd is 1 int length=0; int divide=1; int pre,post; int remove_zero; int reveser_post=0; if(x<0) { return false; } else if(x<10 &&x>=0) { return true; } t=x; while(t/10 !=0) { length++; t=t/10; } length++;//得到整数的位数 //printf("The length is %d\n",length); odd_even_number=(length%2==0)?0:1; int half=length/2; while(half>0) { divide=divide*10; half--; } pre=x/divide; post=x%divide; //printf("divide %d, pre %d,post %d\n",divide,pre,post); if(odd_even_number==1)//odd nubmer { pre=pre/10;//奇数,去掉中间项 } //商去掉后面的0 remove_zero=pre%10; while(remove_zero==0) { pre=pre/10; remove_zero=pre%10; } //printf("divide %d, pre %d,post %d\n",divide,pre,post); //reverse post number while(post>0) { int left=post%10; reveser_post=reveser_post*10+left; post=post/10; } printf("divide %d, pre %d,reveser_post %d\n",divide,pre,reveser_post); if(pre==reveser_post) { return true; } else { return false; } }
(2)负数不考虑进回文的情况,正确解答:
bool isPalindrome(int x) { int t; int odd_even_number;//even number is 0,odd is 1 int length=0; int divide=1; int pre,post; int remove_zero; int reveser_post=0; if(x<0) { return false; } else if(x<10 &&x>=0) { return true; } t=x; while(t/10 !=0) { length++; t=t/10; } length++;//得到整数的位数 //printf("The length is %d\n",length); odd_even_number=(length%2==0)?0:1; int half=length/2; while(half>0) { divide=divide*10; half--; } pre=x/divide; post=x%divide; //printf("divide %d, pre %d,post %d\n",divide,pre,post); if(odd_even_number==1)//odd nubmer { pre=pre/10;//奇数,去掉中间项 } //商去掉后面的0 remove_zero=pre%10; while(remove_zero==0) { pre=pre/10; remove_zero=pre%10; } //printf("divide %d, pre %d,post %d\n",divide,pre,post); //reverse post number while(post>0) { int left=post%10; reveser_post=reveser_post*10+left; post=post/10; } printf("divide %d, pre %d,reveser_post %d\n",divide,pre,reveser_post); if(pre==reveser_post) { return true; } else { return false; } }
0 0
- LeetCode 9. Palindrome Number
- [LeetCode]9.Palindrome Number
- LeetCode --- 9. Palindrome Number
- LeetCode 9.Palindrome Number
- [Leetcode] 9. Palindrome Number
- 9.Palindrome Number
- 9. Palindrome Number
- 9. Palindrome Number
- Problem 9.Palindrome Number
- 【leetcode】 9. palindrome number
- 9.Palindrome Number
- [LeetCode] 9.Palindrome Number
- 9. Palindrome Number
- LeetCode : 9. Palindrome Number
- 9. Palindrome Number
- LeetCode 9.Palindrome Number
- 9. Palindrome Number
- 9. Palindrome Number
- zookeeper部署以及集群
- gson报错找不到类
- struts2 action中set,get方法的作用
- windows上搭建伪zookeeper集群方法二
- 全面介绍Android Studio中Git 的使用(二)
- 9. Palindrome Number
- HIbernate批量插入
- 二进制中有多少个1
- MySQL系列教程(五)
- iOS UIWindow最上层添加视图或者其他控件
- Lightoj 1008【规律】
- Android之Service详解(一)
- 常用正则表达式(转载)
- 关于XP环境下pyserial,提示AttributeError: function 'CancelIoEx' not found错误的解决方法