Rumah > Java > javaTutorial > teks badan

Rentetan: Menyemak Palindrom

Susan Sarandon
Lepaskan: 2024-11-10 09:52:02
asal
711 orang telah melayarinya

Strings: Checking for Palindromes

Dalam siaran ini, kami akan menelusuri soalan temu bual biasa—menyemak sama ada rentetan yang diberikan ialah palindrom. Masalah ini ialah latihan yang bagus untuk memahami petunjuk, gelung dan logik bersyarat dalam Java.


Pernyataan Masalah

Tulis kaedah Java yang menyemak sama ada rentetan yang diberikan ialah palindrom. palindrom ialah perkataan atau frasa yang berbunyi ke hadapan dan ke belakang yang sama (cth., “tengah hari” atau “puan”).


Gambaran Keseluruhan Penyelesaian

Penyelesaian itu memanfaatkan teknik dua penuding untuk memeriksa aksara dari kedua-dua hujung rentetan, bergerak ke arah tengah. Dengan membandingkan aksara pada kedudukan yang sepadan, kita boleh menentukan sama ada rentetan itu ialah palindrom tanpa perlu membalikkannya.

Perkara Utama Pendekatan:

  1. Teknik Dua Penunjuk: Semak aksara dari kedua-dua arah.
  2. Keluar Awal: Berhenti sebaik sahaja ketidakpadanan ditemui.
  3. Pengoptimuman: Hanya melintasi sehingga separuh panjang rentetan untuk kecekapan.

Penyelesaian Kod

Berikut ialah kod untuk penyelesaiannya:

public class StringPalindromeQuestion {

    // Method to check if a given string is a palindrome
    private boolean isPalindrome(String string) {
        if (string != null) {
            for (int i = 0, j = string.length() - 1; i < string.length()
            / 2; i++, j--) {
                if (string.charAt(i) != string.charAt(j)) {
                    return false;
                }
            }
        }
        return true;
    }

    public static void main(String[] args) {
        StringPalindromeQuestion palindrome = new StringPalindromeQuestion();

        String oddString = "abcdcba";    // Palindrome with odd length
        String evenString = "abccba";    // Palindrome with even length
        String nonPalindrome = "asfgsa"; // Not a palindrome

        // Result: true
        System.out.println(palindrome.isPalindrome(oddString));

        // Result: true
        System.out.println(palindrome.isPalindrome(evenString));

        // Result: false
        System.out.println(palindrome.isPalindrome(nonPalindrome));

        // Testing with null
        // Result: true
        System.out.println(palindrome.isPalindrome(null));
    }
}
Salin selepas log masuk

Penjelasan

1. Pendekatan Dua Penunjuk:

  • Kami memulakan dua petunjuk: satu di permulaan (i) dan satu di hujung (j).

  • Kami membandingkan aksara pada kedudukan ini (string.charAt(i) dan string.charAt(j)) dan kenaikan i dan penurunan j selepas setiap perbandingan.

  • Gelung berjalan hanya sehingga string.length() / 2, memastikan traversal yang cekap tidak kira sama ada panjangnya ganjil atau genap.

2. Panjang Ganjil lwn Genap:

  • Untuk rentetan panjang sekata (cth., "abccba"), kaedah menyemak sehingga titik tengah, jadi tiada aksara tengah kekal tanpa tanda.

  • Untuk rentetan panjang ganjil (cth., "abcdcba"), watak tengah secara semula jadi tidak menjejaskan status palindrom.

3. Pengendalian Null:
Kaedah menyemak sama ada rentetan adalah batal pada permulaan untuk mengelakkan NullPointerException.

Contoh Output

  • Palindrom ganjil panjang: "abcdcba" kembali benar.

  • Palindrom genap: "abccba" kembali benar.

  • Bukan Palindrom: "asfgsa" mengembalikan palsu.

  • Null String: mengembalikan benar (input nol dianggap palindrom oleh pelaksanaan ini).


Petua Temuduga ?

Memahami teknik dua mata adalah berharga untuk menyelesaikan banyak masalah berasaskan rentetan dengan cekap. Teknik ini mengelakkan kerumitan ruang tambahan dan menjadikan pelaksanaan kod lebih cepat dengan mengehadkan perbandingan yang tidak perlu.


Kesimpulan

Penyelesaian ini menyediakan cara yang bersih dan cekap untuk memeriksa palindrom di Jawa. Cuba gunakan pendekatan ini dengan input rentetan yang berbeza untuk mengukuhkan lagi pemahaman anda tentang manipulasi penunjuk dan rentas rentetan.


Catatan Berkaitan

  • Asas Java
  • Keperluan Temuduga Tatasusunan
  • Java Memory Essentials
  • Java Keywords Essentials
  • Java OOPs Essentials
  • Keperluan Rangka Kerja Koleksi

Selamat Pengekodan!

Atas ialah kandungan terperinci Rentetan: Menyemak Palindrom. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan