點擊上方「程式設計師大白」,選擇「星標」公眾號
重磅乾貨,第一時間送達
題目意思,要求反轉一個數字,如果反轉後超過32位表示,則輸出0
解題思路(1)這道題非常簡單,可能容易錯誤的是,最後怎麼判斷是否超過了32位,我們的limit.h中的INT_MAX,INT_MIN提供了,那麼我們專心考慮如何反轉即可。
我們可以用字符串進行保存,然後調用反轉方法,最後重新轉發為數字即可。最終判斷一下是否屬於32位範圍之內即可。
解題思路(2)我們可以不用這麼麻煩,先轉化為字符串再做,而是直接進行反轉即可,我們可以對輸入的x,進行判斷,如果while(x!=0),一直進行s = s*10+x%10,x/=10的操作,最終跳出循環的時候,已經實現了反轉操作。
#####舉個例子解釋一下
當輸入為123時候,
while(123!=0)
s = 0*10+123%10 = 3
x = 123/10 = 12
while(12!=0)
s = 3*10+12%10 = 32
x = 12/10 = 1
while(1!=0)
s = 32*10+1%10 = 321
x = 1/10 = 0
這個時候x為0,跳出循環,已經完成了轉換過程!
CPP代碼
class Solution {
public:
int reverse(int x) {
long long int s = 0; //它有可能會超過int的值
while(x!=0)
{
s = s*10+x%10; //進行反轉
x/=10;
}
if(s>INT_MAX || s<INT_MIN)
return 0;
else
return s;
}
};推薦閱讀
Leecode題解:6-convert
Leecode題解:4.Median of Two Sorted Arrays
Leecode題解:3-length Of Longest Substring
Leecode題解:1.TwoSum
Leetcode編程分享—— 盛最多水的容器
開源!TensorFlow 2.0中文開源書項目
談談我在PyTorch踩過的12坑
關於程式設計師大白
程式設計師大白是一群哈工大,東北大學,西湖大學和上海交通大學的碩士博士運營維護的號,大家樂於分享高質量文章,喜歡總結知識,歡迎關注[程式設計師大白],大家一起學習進步!