2020/05/25
はじめに
整数x
の桁全てを反転した数値を求める問題
int型の範囲内に収まらない場合は0を返す。
<例>
123 -> 321
-123 -> -321
コード全体
int reverse(int x) {
long xRev = 0;
while(true){
xRev += x%10;
x /= 10;
if( x == 0 ) break;
else xRev *= 10;
}
if(xRev < INT_MIN || xRev > INT_MAX) return 0;
return xRev;
}
解説
xRev
は、反転した数値を指す変数。int型に収まらないことを考慮してlong型にした。
int reverse(int x) {
long xRev = 0;
「x
を10で割ったあまり」は、x
の一の位を表す。
繰り返しx
を10で割り続け、低い桁から順に数を抜き出し、xRev
に加えていく。
while(true){
xRev += x%10;
x /= 10;
if( x == 0 ) break;
else xRev *= 10;
}
問題で指定された範囲に答えが収まっていない場合は0を、収まっている場合はxRev
を返す。
if(xRev < INT_MIN || xRev > INT_MAX) return 0;
return xRev;
}