码迷,mamicode.com
首页 > 其他好文 > 详细

Reverse Integer

时间:2014-11-03 22:26:18      阅读:268      评论:0      收藏:0      [点我收藏+]

标签: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;
    }
};

 

Reverse Integer

标签:style   blog   io   color   ar   for   sp   div   on   

原文地址:http://www.cnblogs.com/fightformylife/p/4072213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!