Ia adalah masalah mudah dengan perihalan menjadi:
Frasa ialah palindrom jika, selepas menukar semua huruf besar kepada huruf kecil dan mengalih keluar semua aksara bukan abjad angka, ia membaca ke hadapan dan ke belakang yang sama. Aksara abjad angka termasuk huruf dan nombor.
Diberi rentetan s, kembalikan benar jika ia adalah palindrom, atau palsu sebaliknya.
Contoh 1:
Input: s = "Seorang lelaki, pelan, terusan: Panama"
Output: benar
Penjelasan: "amanaplanacanalpanama" ialah palindrom.Contoh 2:
Input: s = "lumba kereta"
Output: palsu
Penjelasan: "raceacar" bukan palindrom.Contoh 3:
Input: s = " "
Output: benar
Penjelasan: s ialah rentetan kosong "" selepas mengalih keluar aksara bukan abjad angka.
Memandangkan rentetan kosong membaca ke hadapan dan ke belakang yang sama, ia adalah palindrom.Kekangan:
1 <= s.panjang <= 2 * 105
s hanya terdiri daripada aksara ASCII yang boleh dicetak.
Mengikut apa itu palindrom, anda pada asasnya mengalih keluar semua bukan alfa kemudian memanggil untuk menurunkan kaedah kes dan membuat kembali untuk membandingkan.
Menggunakan kaedah dan sedikit reg exp anda boleh menyelesaikannya dalam 3 baris:
class Solution { public boolean isPalindrome(String s) { final String reduced = s.replaceAll("[^A-Za-z0-9]", "").toLowerCase(); final String inverted = new StringBuilder(reduced).reverse().toString(); return reduced.equals(inverted); } }
Masa Jalan: 15 ms, lebih cepat daripada 22.51% penyerahan dalam talian Java untuk Palindrom Sah.
Penggunaan Memori: 44.8 MB, kurang daripada 34.15% penyerahan dalam talian Java untuk Palindrom Sah.
Itu sepatutnya cukup sebagai soalan mudah dan mudah, tetapi untuk mendapatkan prestasi yang lebih baik, anda boleh mengulangi dan menyemak setiap aksara dan mengalih keluar serta menyesuaikan seperti yang diperlukan, untuk kes ini, saksham checkout menjawab pada leetcode (jika anda ingin saya terangkan secara terperinci , sila komen di bawah).
—
Itu sahaja! Jika ada perkara lain untuk dibincangkan, sila tinggalkan ulasan, jika saya terlepas apa-apa beritahu saya supaya saya boleh mengemas kini dengan sewajarnya.
Sehingga post seterusnya! :)
Atas ialah kandungan terperinci Leetcode — Temuduga Teratas –. Palindrom yang sah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!