Lintcode 反轉整數
題目
將一個整數中的數字進行顛倒,當顛倒後的整數溢位時,返回 0 (標記為 32 位整數)。
樣例
給定 x = 123,返回 321
給定 x = -123,返回 -321
class Solution {
public:
/**
* @param n the integer to be reversed
* @return the reversed integer
*/
int reverseInteger(int n) {
// Write your code here
//如何判斷整數的溢位?
//如何判斷整數反轉後的溢位?是不是應該換成long
bool flag=true;
long res=0;
//輸入非法
if(n>=2147483648||n<=-2147483648)
return 0;
//反轉操作
else
{
vector<int> vec;
if(n<0)
{
flag=false;
n=-n;
}
while(n!=0)
{
//得到每一位的數字加入容器尾端
vec.push_back(n%10);
n/=10;
}
//求反轉後的數字
for(auto c:vec)
res=res*10+c;
}
//反轉之後的判斷
if(res>=2147483648)
{
return 0;
}
else if(flag==false)
return -res;
else
return res;
}
};
優化
我們可以一邊計算res的值一邊判斷res是否越界
class Solution {
public:
/**
* @param n the integer to be reversed
* @return the reversed integer
*/
int reverseInteger(int n) {
// Write your code here
//如何判斷整數的溢位?
//如何判斷整數反轉後的溢位?是不是應該換成long
long res=0;
//輸入非法
if(n>=2147483648||n<=-2147483648)
return 0;
//反轉操作
else
{
vector<int> vec;
while(n!=0)
{
//得到每一位的數字加入容器尾端
vec.push_back(n%10);
n/=10;
}
//求反轉後的數字,並判斷數字是否越界
for(auto c:vec)
{
res=res*10+c;
if(res>=2147483648)
return 0;
}
}
return res;
}
};
再優化,因為res在計算的過程中,如果發生越界,那麼得到的值/10操作肯定不會等於未加之前的值,則,res也可以宣告為int型別。
class Solution {
public:
/**
* @param n the integer to be reversed
* @return the reversed integer
*/
int reverseInteger(int n) {
int result = 0;
while (n) {
auto prev = result;
result *= 10;
result += n % 10;
if (result / 10 != prev) {
result = 0;
break;
}
n /= 10;
}
return result;
}
};
相關文章
- 7.整數反轉
- LeetCode(7)--.反轉整數LeetCode
- LeetCode反轉整數(Python)LeetCodePython
- LeetCode7.整數反轉 JavaScriptLeetCodeJavaScript
- LeetCode7:ReverseInteger(整數反轉)LeetCode
- 整數反轉:給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。符號
- 每日一道演算法:整數反轉演算法
- 每日一道 LeetCode (2):整數反轉LeetCode
- LeetCode每日一題:整數反轉(No.7)LeetCode每日一題
- LeetCode題庫整理【Java】—— 7整數反轉LeetCodeJava
- 給定一個 32 位有符號整數,將整數中的數字進行反轉。符號
- 2020-11-13整數轉換為字串 字元反轉字串字元
- 讓我們一起啃演算法----整數反轉演算法
- 7.反轉整數。面試,筆試題目總結練習面試筆試
- 資料結構與演算法---螺旋矩陣、整數反轉資料結構演算法矩陣
- 詳解 LeetCode_007_整數反轉(Java 實現)LeetCodeJava
- js小數轉整數JS
- 整數型別(轉)型別
- 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。符號
- 字串或數字反轉字串
- 字串轉換整數(atoi)字串
- 轉換成為整數
- 【劍指offer】字串轉整數字串
- 將整數轉換成字串字串
- LeetCode 13[羅馬數字轉整數]LeetCode
- leetcode 解題:7. 整數反轉 @ 彈出和推入數字 & 溢位前進行檢查LeetCode
- js 將負數或小數轉成正整數JS
- LintCode 刪除數字
- LeetCode 力扣 羅馬數字轉整數LeetCode力扣
- python實現字串轉換整數Python字串
- [LeetCode] Reverse Integer 翻轉整數LeetCode
- leetcode13題——羅馬數字轉整數LeetCode
- [LeetCode] Integer to Roman 整數轉化成羅馬數字LeetCode
- [LeetCode] Roman to Integer 羅馬數字轉化成整數LeetCode
- [LintCode]NumberofIslands(島嶼個數)
- 每日一道演算法:羅馬數字轉整數演算法
- LeetCode_Python(13)_羅馬數字轉整數LeetCodePython
- python-leetcode13羅馬數字轉整數PythonLeetCode