反轉整數

描述:將一個整數中的數字進行顛倒,當顛倒後的整數溢出時,返回 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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章