把整數反轉和回文數判斷放一起是因為兩個題類似且回文數判斷是整數反轉的加強版,做了這兩個簡單題會有一些識訓分享如下:
1.整數反轉

題目分析:
三個實體很清晰的舉例出了三種情況:
1.不帶負號的整數
2.帶負號的整數(難點在于怎么處理負號不動的情況下進行反轉)
3.后面帶0的數字(難點是怎么處理反轉之后前面不帶零)
因為包含負數可以考慮更好的while回圈解決,并且考慮反轉以后存在溢位的情況,
代碼如下:
int reverse(int x){
long long number=0;//增大反轉以后資料的型別
while(x){
number=number*10+x%10;
x=x/10;
}//反轉代碼
if (number > pow(2, 31)-1 || number < -pow(2, 31))
return 0;//反轉之后int型溢位判斷
return number;
}
2.回文判斷

題目分析:
回傳的是布爾型的結果
1.正數的回文判斷
2.負數的回文判斷(負數的負號也會跟著反轉而改變以此所有的負數一定不是回文數)
3.后面帶零的數字(反轉以后零也跟著動,其實反轉以后零算不算前面影響不大,例如10反轉以后01不是回文數,不帶零的1也可以判斷不是回文數)
根據上一題的數字反轉的思路,可以先進行數字反轉在進行判斷,
代碼如下:
bool isPalindrome(int x){
long long newnumber=0;//增大反轉以后資料的型別
int number=x;
if(x<0){
return false;
}//負數直接回傳false
else{
while(x){
newnumber=newnumber*10+x%10;
x=x/10;
}//數字反轉
if(newnumber==number){
return true;
}//判斷是否是回文數
else
return false;
}
return 0;
}
總結:
1.這兩個題的核心都是對數字進行反轉,數字反轉通用代碼:
while(x){ newnumber=newnumber*10+x%10; x=x/10; }
2.考慮數字反轉以后的溢位情況
用long long代表反轉之后的數字,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240958.html
標籤:其他
