。最も近い回文を見つける

PHPz
リリース: 2024-08-25 06:37:02
オリジナル
937 人が閲覧しました

. Find the Closest Palindrome

564。最も近い回文を見つけます

難易度:難しい

トピック:数学、文字列

整数を表す文字列 n が与えられると、_最も近い整数 (それ自体は含まない) を返します。これは回文です。同点の場合は、小さい方を返してください

最も近いものは、2 つの整数の間で最小化された絶対差として定義されます。

例1:

  • 入力:n = "123"
  • 出力:「121」

例 2:

  • 入力:n = "1"
  • 出力:"0"
  • 説明:0 と 2 は最も近い回文ですが、最小の 0 を返します。

制約:

    1 n は数字のみで構成されます
  • n には先行ゼロがありません。
  • n は [1, 10
  • 18- 1] の範囲の整数を表します。

ヒント:

    この問題に対してブルートフォースは機能しますか?別のことを考えてください。
  1. 1234、999、1000などの例をいくつか取り上げ、それらに最も近い回文を確認してください。さまざまなケースが何通り考えられますか?
  2. 文字列の左半分のみを考慮する必要がありますか、それとも右半分だけを考慮する必要がありますか?
  3. これらの数字から最も近い回文を見つけてください - 12932、99800、12120。何か気づきましたか?

解決策:

潜在的な回文候補を生成し、入力数値に最も近いものを選択する関数の作成に焦点を当てます。

解決策のアプローチ:

  1. 回文候補を特定する:

      数字の前半をミラーリングして回文を作成します。
    • すべての数字が 9、100...001、または 99...99 であるような特殊なケースを考慮してください。
    • 数値の中央を 1 ずつ上下に変更して回文を生成します。
  2. 最も近い回文を計算する:

      回文候補ごとに、元の数値との差の絶対値を計算します。
    • 差が最も小さい回文を返します。同点の場合は、小さい方の回文を返します。
このソリューションを PHP で実装しましょう:

564。最も近い回文を見つけます
リーリー

説明:

  • 回文生成($firstHalf, $isOddLength):
      このヘルパー関数は、数値の前半をミラーリングして回文を作成します。
  • リーリー
  • エッジケース:

      100...001 や 99...99 などの数値から生成された回文は、これらのケースを明示的にチェックすることで処理されます。
  • メインロジック:

      考えられる回文を計算し、絶対差を比較することで最も近い回文を見つけます。
このソリューションは、考えられる回文の候補を効率的に絞り込み、少数のオプションのみを考慮して最も近いものを選択するため、総当りのアプローチよりもはるかに高速になります。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で

リポジトリにスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとってとても意味のあるものになります!

このような役立つコンテンツが必要な場合は、お気軽にフォローしてください:

  • リンクトイン
  • GitHub

以上が。最も近い回文を見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!