Rumah >pembangunan bahagian belakang >tutorial php >. Cari Palindrom Terdekat

. Cari Palindrom Terdekat

PHPz
PHPzasal
2024-08-25 06:37:021254semak imbas

. 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-. Jika seri, kembalikan yang lebih kecil.

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 ialah 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 kekerasan akan berkesan untuk masalah ini? Fikirkan sesuatu yang lain.
  2. Ambil beberapa contoh seperti 1234, 999,1000, dll dan semak palindrom terdekat mereka. Berapa banyak kes berbeza mungkin?
  3. Adakah kita hanya perlu mempertimbangkan separuh kiri atau separuh kanan rentetan 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:

    • Cerminkan 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, hitung perbezaan mutlak dengan nombor asal.
    • Kembalikan palindrom dengan perbezaan terkecil. Jika seri, kembalikan palindrom yang lebih kecil.

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

<?php
/**
* @param String $n
* @return String
*/
function nearestPalindromic($n) {
    ...
    ...
    ...
    /**
     * go to https://github.com/mah-shamim/leet-code-in-php/tree/main/algorithms/000564-find-the-closest-palindrome/solution.php
     */
}

function generatePalindrome($firstHalf, $isOddLength) {
    ...
    ...
    ...
}

// Example usage
echo nearestPalindromic("123"); // Output: "121"
echo nearestPalindromic("1");   // Output: "0"
?>




<h3>
  
  
  Penjelasan:
</h3>

<ul>
<li>
<strong>hasilkanPalindrome($firstHalf, $isOddLength)</strong>:

<ul>
<li>Fungsi pembantu ini mencipta palindrom dengan mencerminkan separuh pertama nombor.
</li>
</ul>


</li>

</ul>

<pre class="brush:php;toolbar:false"><?php
/**
* @param $firstHalf
* @param $isOddLength
* @return string
*/
function generatePalindrome($firstHalf, $isOddLength) {
    $secondHalf = strrev(substr($firstHalf, 0, $isOddLength ? -1 : $firstHalf));
    return $firstHalf . $secondHalf;
}
?>
  • Kes Tepi:

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

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

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

Pautan Kenalan

Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi 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!

Kenyataan:
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