首页 > 代码库 > Reverse Integer

Reverse Integer

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;    }};

 

Reverse Integer