一中依靠int和long long 自身特性判断溢出的写法

反转数字

http://www.nowcoder.com/questionTerminal/1a3de8b83d12437aa05694b90e02f47a

class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    int reverse(int x) {
        // write code here
        if( 0==x )
        {
            return 0;
        }

        char solve[15];
        sprintf(solve,"%d",x);

        long long sum=0;
        int temp=0;
        int tag=1;//权重
        bool flag=false;//不是负数

        int len=strlen( solve );
        int left=0,right=len-1;
        while( left<right )
        {
            swap(solve[left], solve[right]);
            ++left;
            --right;
        }
        while( len-- )
        {
            if( '-'==solve[len] )
            {
                flag=true;
                continue;
            }

            int num=tag*(solve[len]-'0');
            tag*=10;

            sum+=(long long)num;
            temp+=num;
        }

        if( temp!=sum )
        {
            return 0;
        }
        else
        {
            if( flag )
            {
                return -1*temp;
            }
            else
            {
                return temp;
            }
        }

    }
};
全部评论

相关推荐

CrazyBucket:我今天下午也做梦在招聘会上面试一家小厂,给自己气笑了
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务