标签:style blog io color ar for sp div on
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
特殊:在32位机中,由于int的范围到该是-20亿到20亿之间,所以如果我们翻转一个数1912345678,就变成8765432191,这里也就溢出了int的范围。不过好像leetcode测试案例中没弄这么大的数,所以我的代码还是AC啦。
思路:较直白,拿到整数,先转化为字符串,然后对字符串做换位操作,再将字符串转化成整数。
注意:另外需要注意,一般的函数库是没有itoa的,只有atoi。所以需要自己实现itoa。
class Solution { public: void itoa(int num,char str[]) { int sign = num; int i = 0; int j = 0; char temp[100]; //如果是负数就去掉符号,将-1234转成1234 if(sign < 0) { num = -num; } //转成字符串,1234转成"4321" do { temp[i] = num % 10 + ‘0‘; num /= 10; i++; }while(num > 0); //如果是负数的话,加个符号在末尾,如:"4321-" if(sign < 0) { temp[i++] = ‘-‘; } temp[i] = ‘\0‘; i--; //将temp数组中逆序输入到str数组中 //将"4321-" ====> "-1234" while(i >= 0) { str[j] = temp[i]; j++; i--; } //字符串结束标识 str[j] = ‘\0‘; } int reverse(int x) { char a[100]; itoa(x,a); int len=strlen(a); if(a[0]==‘-‘) { for (int i=1;i<=len/2;++i){ int j=len-i; int temp=a[i]; a[i]=a[j]; a[j]=temp; } }else { for (int i=0;i<len/2;++i){ int j=len-i-1; int temp=a[i]; a[i]=a[j]; a[j]=temp; } } int res=atoi(a); return res; } };
标签:style blog io color ar for sp div on
原文地址:http://www.cnblogs.com/fightformylife/p/4072213.html