描述:將一個整數中的數字進行顛倒,當顛倒後的整數溢出時,返回 0 (標記爲 32 位整數)。
樣例
給定 x = 123,返回 321
給定 x = -123,返回 -321
思路:聯想到字符串翻轉函數reserve(),所以考慮先將數據由整型轉換到字符串型,然後由字符串型轉換到整型。當結果溢出時,正數整型數據會產生負數形式。
class Solution {
public:
/**
* @param n the integer to be reversed
* @return the reversed integer
*/
int reverseInteger(int n) {
// Write your code here
int flag=0,byte=0,len,j,result=0;
string s;
char t;
if(n < 0)
{
flag=1;
n=0-n;
}
while(n != 0)
{
byte=n%10;
t=byte+'0';
n=n/10;
s.push_back(t);
}
reverse(s.begin(),s.end());//當輸入爲123時,發現經整型轉字符串型,變成了"321",後面轉化爲整型時,把第一個字符作爲個位,最後一個字符作爲最高位,相當於又翻轉了一次。因此此處調用了reserve,達到最終翻轉一次的目的。
len=s.size();
for(j=0; j<len; j++)
{
result += (s[j]-'0')*pow(10, j);
if(result < 0)
{
result=0;
return result;
}
}
if(flag)
{
result=0-result;
}
return result;
}
};