Java 情報系

【Javaで解説】Palindrome Number|LeetCodeの初心者向け解説【回文数を判定】

2025年6月19日

はじめに

LeetCode の問題「Palindrome Number(回文数)」は、初心者にとってとても良い練習問題です。

この記事では、Java を使ってこの問題を解く方法を、初心者でもわかりやすく解説していきます。

  • 回文数って何?
  • どうやってプログラムで判断するの?
  • 効率の良い方法ってあるの?

といった疑問に、実際のコードを交えながら答えていきます!


問題の説明

LeetCodeより、問題は以下のように出題されます。

整数 x が与えられたとき、それが回文であるかを判定せよ。
回文とは、前から読んでも後ろから読んでも同じ数のこと。

例:

  • 入力: x = 121 → 反転:121 → 出力: true
  • 入力: x = -121 → 反転:121- → 出力: false
  • 入力: x = 10 → 反転:01 → 出力: false

自分の解き方(文字列に変えてひっくりかえす)

初心者としてまず思いついた方法は、数値を文字列に変換して、それを反転して比較する方法です。

Javaコード:

public class Solution {
public boolean isPalindrome(int x) {
String original = String.valueOf(x);
String reversed = new StringBuilder(original).reverse().toString();
return original.equals(reversed);
}
}

解説:

  • String.valueOf(x):整数を文字列に変換
  • StringBuilder().reverse():文字列を逆順に
  • equals():元の文字列と逆にした文字列を比較

ポイント:

  • ✔️ 初心者にはとても分かりやすい
  • ❌ ただし処理効率はそこまで良くない(文字列操作が入るため)

効率の良い解き方(半分までひっくり返す)

より効率的な方法は、「数値の後半部分だけを逆にして前半と比べる」という考え方です。

Javaコード:

public class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}

int reversedHalf = 0;
while (x > reversedHalf) {
reversedHalf = reversedHalf * 10 + x % 10;
x /= 10;
}

return (x == reversedHalf || x == reversedHalf / 10);
}
}

解説

  • x < 0:マイナスの数は回文にならない
  • x % 10 == 0 && x != 0:末尾0の数も回文にはなれない(010はNG)
  • while文で、数値の後半だけを反転して比較対象に
  • 桁数が奇数の場合は真ん中の数字を除外して比較(reversedHalf / 10

この方法のメリット:

  • ✔️ 数値のままで処理するため高速
  • ✔️ 文字列に変換しないのでメモリ効率も良い
  • ✔️ インタビューなどでも高評価される方法

最後に

今回は LeetCode の「Palindrome Number(回文数)」という問題を、Java を使って初心者向けにわかりやすく解説しました。

「数値のまま半分だけひっくり返す」方法が効率がいいのでぜひチャレンジしてみてください。

この問題を通じて、ロジックの発想力コードの読みやすさ・効率の違いを実感できるはずです!

-Java, 情報系