. Cari Palindrom Terdekat

PHPz
Lepaskan: 2024-08-25 06:37:02
asal
937 orang telah melayarinya

. Find the Closest Palindrome

564. Cari Palindrom Terdekat

Kesukaran:Sukar

Topik:Matematik, Rentetan

Diberi rentetan n mewakili integer, kembalikan _integer terdekat (tidak termasuk dirinya), iaitu palindrom-. Kalau seri, pulangkanyang kecik.

Yang paling hampir ditakrifkan sebagai perbezaan mutlak yang diminimumkan antara dua integer.

Contoh 1:

  • Input:n = "123"
  • Output:"121"

Contoh 2:

  • Input:n = "1"
  • Output:"0"
  • Penjelasan:0 dan 2 adalah palindrom yang paling hampir tetapi kami mengembalikan yang terkecil iaitu 0.

Kekangan:

  • 1 <= n.panjang <= 18
  • n hanya terdiri daripada digit.
  • n tidak mempunyai sifar pendahuluan.
  • n mewakili integer dalam julat [1, 1018- 1].

Petunjuk:

  1. Adakah brute force berfungsi untuk masalah ini? Fikirkan benda lain.
  2. Ambil beberapa contoh seperti 1234, 999,1000, dll dan semak palindrom terdekat mereka. Berapa banyak kes yang berbeza mungkin?
  3. Adakah kita perlu mengambil kira separuh kiri atau kanan separuh sahaja tali atau kedua-duanya?
  4. Cuba cari palindrom terdekat bagi nombor ini- 12932, 99800, 12120. Adakah anda memerhati sesuatu?

Penyelesaian:

Kami akan menumpukan pada mencipta fungsi yang menjana calon palindrom yang berpotensi dan kemudian memilih yang paling hampir dengan nombor input.

Pendekatan Penyelesaian:

  1. Kenalpasti Calon Palindrom:

    • Cermin separuh pertama nombor untuk membentuk palindrom.
    • Pertimbangkan kes tepi seperti semua digit ialah 9, 100...001 atau 99...99.
    • Jana palindrom dengan mengubah suai bahagian tengah nombor ke atas atau ke bawah sebanyak 1.
  2. Kira Palindrom Terhampir:

    • Bagi setiap calon palindrom, kira perbezaan mutlak dengan nombor asal.
    • Kembalikan palindrom dengan perbezaan terkecil. Jika seri, pulangkan palindrom yang lebih kecil.

Mari kita laksanakan penyelesaian ini dalam PHP:564. Cari Palindrom Terdekat

 

Penjelasan:

  • generatePalindrome($firstHalf, $isOddLength):
    • Fungsi pembantu ini mencipta palindrom dengan mencerminkan separuh pertama nombor.
Salin selepas log masuk
  • Kes Tepi:

    • Palindrom yang dijana daripada nombor seperti 100...001 atau 99...99 dikendalikan dengan memeriksa kes ini secara eksplisit.
  • Logik Utama:

    • Kami mengira kemungkinan palindrom dan kemudian mencari yang paling hampir dengan membandingkan perbezaan mutlak.

Penyelesaian ini dengan cekap mengecilkan kemungkinan calon palindrom dan memilih yang paling hampir dengan hanya mempertimbangkan beberapa pilihan, menjadikannya lebih pantas daripada pendekatan kekerasan.

Hubungi Pautan

Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberirepositoribintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna buat saya!

Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:

  • LinkedIn
  • GitHub

Atas ialah kandungan terperinci . Cari Palindrom Terdekat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!