Periksa Apakah String adalah Palindrome di Java dan Python

Selama bertahun-tahun, memeriksa apakah sebuah string adalah palindrom atau bukan telah menjadi pertanyaan wawancara pengkodean klasik. Ini karena melibatkan konsep seputar manipulasi dan perbandingan string dan bahkan loop tergantung pada implementasinya. Dan, pertanyaannya tidak panjang sehingga bisa diselesaikan dalam batasan waktu wawancara. Artikel ini mencakup implementasi untuk memeriksa apakah string adalah palindrome di java dan python.

Apa Itu Palindrom?

Menurut synonym.com, definisi palindrome adalah "sebuah kata atau frase yang dibaca mundur sama dengan maju." Pada dasarnya, itu berarti jika Anda menulis kata atau frasa secara terbalik, itu akan sama persis seperti ketika itu maju. Misalnya, ayah dan ibu adalah palindrom dan ayah dan ibu tidak. Kata "palindrom" berasal dari dua akar kata Yunani, "palin" yang berarti lagi dan "dromos" yang berarti jalan atau arah. Itu diciptakan oleh dramawan Inggris Ben Jonson pada abad ke-17.

Larutan

  • Cara paling umum dan mudah untuk menyelesaikan pertanyaan adalah dengan membalik string terlebih dahulu dan kemudian membandingkannya dengan string asli. Pendekatan ini akan menjadi O(n) dalam notasi big-O karena pembalikan string adalah O(n).
  • Cara lain adalah dengan mulai membandingkan karakter dari awal dan akhir dan terus berlanjut hingga Anda mencapai tengah. Pendekatan ini memiliki kompleksitas waktu O(n/2) tetapi dalam notasi O besar akan tetap O(n). Tetapi keuntungan dengan pendekatan ini adalah Anda dapat mengembalikan False segera setelah Anda menemukan ketidakcocokan pertama, sedangkan dengan pendekatan pertama, karena membalik string adalah langkah pertama, kompleksitas waktu akan selalu O(n).

Palindrome dalam Implementasi Python

Berikut ini adalah kode untuk memeriksa apakah suatu string palindrome dengan python.

def is_palindrome(s): """Mengembalikan True jika argumen yang diberikan s adalah palindrome else False""" assert(isinstance(s,str)), "Argument s bukan tipe " # Nyatakan jika argumen yang diberikan bertipe return s[::-1]==s # Bandingkan kebalikan dari string dengan dirinya sendiri if __name__=="__main__": print(is_palindrome("dad"))def is_palindrome(word): """Membandingkan karakter satu per satu dari awal dan akhir dan mengembalikan False ketika ketidakcocokan pertama terjadi atau mengembalikan True""" i1,i2 = 0,len(word)-1 # Inisialisasi kursor while i2>i1: if word[i1]!=word[i2]: # Jika karakter tidak cocok maka tidak perlu melanjutkan kembali False i1+=1 i2-=1 return True if __name__=="__main__ ": print(is_palindrome("ayah"))

Palindrome dalam Implementasi Java

Berikut ini adalah kode untuk memeriksa apakah sebuah string palindrome di java.

public class Palindrome { public static Boolean isPalindrome(String str){ StringBuilder sb = new StringBuilder(str); // StringBuilder memiliki metode kebalikan return sb.reverse().toString().equals(str); // Bandingkan kebalikan dari string dengan dirinya sendiri } public static void main(String args[]) { Boolean b = isPalindrome("ayah"); System.out.println(b); } }public class Palindrome { public static Boolean isPalindrome(String str){ int i1 = 0; int i2 = str.length() - 1; while(i2>i1){ if(str.charAt(i1)!=str.charAt(i2)){ mengembalikan false; } i1++; i2--; } kembali benar; } public static void main(String args[]) { Boolean b = isPalindrome("ayah"); System.out.println(b); } }