一中依靠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;
            }
        }

    }
};
全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务