LeetCode題目:7. Reverse Integer
這個題目需要將輸入的整數反轉後輸出,另外需要注意的部分如下:
1.當輸入的數字為負數時,反轉的數字也要以負數表示。
例如:輸入-123
,輸出必須為-321
。
2.如果輸入的數字尾數為0,輸出時不顯示第一碼的0。
例如:輸入120
,輸出必須為21
。
3.若反轉後的數字超出int變數的範圍,就回傳0。
即輸出的數字要在-2^31~2^31
這個範圍內,如果超過就return 0。
C#中的Int32.TryParse
方法,可以將字串轉換為數字,並回傳該次轉換是否成功,
所以可以針對第3點,直接對反轉後的數字進行檢核。Int32.TryParse
的使用方法為:
int.TryParse(輸入的字串, out 輸出的數字)
最後是單純用暴力解的程式碼,有非常多需要改善的部分,
請參考有使用到Int32.TryParse
的部分就好🥲
public class Solution {
public int Reverse(int x) {
var y = x.ToString();
int resultInt= 0;
var result = "";
if(x > 0)
{
//最後一個字為0時跳過不加進result字串
for(int i = (x % 10 != 0 ? y.Length-1 : y.Length-2); i >= 0; i--)
{
result += y[i];
}
}
//x為負數時,先加入負號,然後將數字轉為正數後反轉
if(x < 0)
{
result += "-";
y = (x-(x*2)).ToString();//轉成正數
for(int i = (x % 10 != 0 ? y.Length-1 : y.Length-2); i >= 0; i--)
{
result += y[i];
}
}
//如果int.TryParse無法將result轉成數字,就直接return 0
if (int.TryParse(result, out resultInt) == false)
{
resultInt = 0;
}
return resultInt;
}
}
感謝分享
以下提供一些小建議:
public int Reverse(int x)
{
var y = x.ToString();
int resultInt = 0;
var result = "";
//x為負數時,先加入負號,然後將數字轉為正數後反轉
if (x < 0)
{
result += "-";
y = (x * -1).ToString();//轉成正數
}
for (int i = y.Length - 1; i >= 0; i--)
{
result += y[i];
}
//如果int.TryParse無法將result轉成數字,就直接return 0
if (int.TryParse(result, out resultInt) == false)
{
resultInt = 0;
}
return resultInt;
}
喔喔 好方法 (( 筆記
非常感謝您的建議~
第一時間直接把想法轉成程式碼寫下來,
所以知道有很多需要調整的地方
不過竟然沒想到轉正數只要乘-1就好XD