leetcode9 Palindrome Number
2015-09-09 20:01
330 查看
题意:给予一个整数,判断其是否为回文数,负数直接返回false.
二次AC,开始时以为负数也算是回文数,但是事实不是这样的.转换成了字符串,依次对比就ok了,代码里运用了itoa的源码.
代码
另外一种就是从头开始计算一遍,就是计算字符串那样计算,之后判断是否与原整数相等,相等则是回文.
二次AC,开始时以为负数也算是回文数,但是事实不是这样的.转换成了字符串,依次对比就ok了,代码里运用了itoa的源码.
代码
<span style="font-size:18px;">#include<stdio.h> #include<iostream> #include<string.h> #include<string> #include<cstdlib> #include<algorithm> #include<math.h> using namespace std; class Solution { public: char* itoa(int num,char*str,int radix) { /*索引表*/ char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; unsigned unum;/*中间变量*/ int i=0,j,k; /*确定unum的值*/ if(radix==10&&num<0)/*十进制负数*/ { unum=(unsigned)-num; str[i++]='-'; } else unum=(unsigned)num;/*其他情况*/ /*转换*/ do{ str[i++]=index[unum%(unsigned)radix]; unum/=radix; }while(unum); str[i]='\0'; /*逆序*/ if(str[0]=='-') k=1;/*十进制负数*/ else k=0; char temp; for(j=k;j<=(i-1)/2;j++) { temp=str[j]; str[j]=str[i-1+k-j]; str[i-1+k-j]=temp; } return str; } bool isPalindrome(int x) { int len; int i; char str[100]; memset(str,0,sizeof(str)); if(x<0) return false; x = abs(x); itoa(x,str,10); len = strlen(str); for(i=0;i<len/2;i++) { if(str[i] != str[len-i-1]) break; } if(i == len/2) return true; else return false; } }; int main() { bool result; Solution test; int num; num = -2147447412; result = test.isPalindrome(num); cout<<result<<endl; return 0; }</span>
另外一种就是从头开始计算一遍,就是计算字符串那样计算,之后判断是否与原整数相等,相等则是回文.
<span style="font-size:18px;">class Solution { public: bool isPalindrome(int x) { if (x < 0) return false; if(x == 0) return true; double result = 0; int temp = x; while(temp != 0) { result = result*10 + temp%10; temp /= 10; } return result == x; } };</span>
相关文章推荐
- 网站性能优化
- ARC,MRC理解
- 屌屌的Web树--保存分类
- 写一个网络图片查看器
- 神经网络
- Qt5 中使用了QQuickWidget,程序退出时容易崩溃的解决办法。
- lesson3 -Vim
- 引导页的铺设
- Java简单彩票系统(35选7)
- HDU-2732 Leapin's Lizards
- 使用分布式数据库集群做大数据分析之OneProxy
- button初始化类目
- lesson2 -basic Linux tasks
- 哈哈 一个小程序
- HDU 5024(枚举+搜索/记忆化搜索)
- poj 3087 Shuffle'm Up
- ORA-00904:“”:标识符无效
- 1001--Java 多线程 并发编程
- URL最大长度
- Git book 中文