007 Reverse Integer[E]

1 題目描述

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

難度:Easy

2 題目樣例

Example 1:

Input: 123nOutput: 321n

Example 2:

Input: -123nOutput: -321n

Example 3:

Input: 120nOutput: 21n

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 Solutionnn{npublic:n n int reverse(int x) n n {n long long temp=0;n n while(x!=0)n n {n temp=10*temp+x%10;n n x/=10;n }n n if(temp>INT_MAX || temp<INT_MIN)n n return 0;n n elsen n return temp;n }n};n

既然題目中已經很明確的表示了,所輸入的只是一個32位的整數,那麼我完全可以用一個long long類型的數字進行存儲,這樣就不需要擔心所聲明的long long溢出的問題了。

最後進行一下判斷即可。

不要忘記把你聲明的變數進行初始化啊!!

5 後記

這可能是本專欄文章中最簡短的一篇了吧...我相信這個"最短"的記錄,可以保持很久很久。

推薦閱讀:

《C++ Primer》讀書筆記-第九章 04 vector對象增長
LeetCode 15. 3Sum
單鏈表翻轉?
LeetCode 680. Valid Palindrome II

TAG:算法 | LeetCode | 算法设计 |