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

    }
};
全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务