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