ys memos

Blog

Leetcode 7 Reverse Integer


leetcode

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;
}

関連タグを探す