007 Reverse Integer[E]

1 题目描述

Given a 32-bit signed integer, reverse digits of an integer.

难度:Easy

2 题目样例

Example 1:

Input: 123
Output:  321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

3 题目分析

很简单的翻转整数问题…一般说来,学习计算机学科的学生,在大一就会接触到与之类似的题目。

一般说来,处理字符串和处理整数都是可行的方案。

但是由于这道题目的Note里明确的提到了这样一点:如果溢出,就直接return 0。

所以不要想着用字符串解决问题啦,老老实实地写整数处理就好了。

4 思路分析

思路是十分明确的,利用除法和取模操作,把每一位都取出来,然后再计算回去就好。

代码实现如下:

class Solution

{
public:
    
    int reverse(int x) 
    
    {
        long long temp=0;
        
        while(x!=0)
            
        {
            temp=10*temp+x%10;
            
            x/=10;
        }
        
        if(temp>INT_MAX || temp<INT_MIN)
            
            return 0;
        
        else
            
            return temp;
    }
};

既然题目中已经很明确的表示了,所输入的只是一个32位的整数,那么我完全可以用一个long long类型的数字进行存储,这样就不需要担心所声明的long long溢出的问题了。

最后进行一下判断即可。

不要忘记把你声明的变量进行初始化啊!!

5 后记

这可能是本专栏文章中最简短的一篇了吧…我相信这个”最短”的记录,可以保持很久很久。

    原文作者:Lolita
    原文地址: https://zhuanlan.zhihu.com/p/33508645
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞