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.
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”).
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.
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)); } }
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.
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).
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.
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.
Selamat Pengekodan!
Atas ialah kandungan terperinci Rentetan: Menyemak Palindrom. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!