CodeGym /Blog Jawa /Acak /Program Java kanggo mriksa String yaiku Palindrome
John Squirrels
tingkat
San Francisco

Program Java kanggo mriksa String yaiku Palindrome

Diterbitake ing grup
Sawetara masalah ing program duwe status klasik. Biasane, tugas kasebut ana gandhengane karo matematika lan seneng banget takon karo mahasiswa spesialisasi Ilmu Komputer, uga para pencari kerja nalika wawancara. Dheweke apik amarga mbantu nyiyapake pamikiran sampeyan kanthi cara programmer kanthi apik, uga nglatih. Salah sawijining masalah yaiku mriksa manawa senar minangka palindrom, lan kita bakal nimbang ing artikel iki.

Apa palindrome lan ngapa bisa nggoleki

Palindrom minangka nomer, kombinasi huruf, tembung utawa teks sing maca padha ing loro arah. Kanggo ngringkes, palindrom bisa diarani sembarang set karakter sing simetris ing tengah. Tembung kasebut asale saka basa Yunani sing asale saka tembung "mlaku bali" (palin yaiku "maneh, bali," lan dromos, "mlaku". Palindrome ing basa Jawa tegese padha karo ing umum. Tuladha palindrom:
  • 1881
  • aaqquqqaa
  • pop
  • awan
  • tingkat
  • Rotator
  • Gymku
  • Bu aku Adam
  • Saiki, Pak, perang wis menang!
1881 minangka nomer palindrom lan liyane minangka senar palindrom. Ing artikel iki, kita bakal nliti palindrom sing diwakili minangka senar, nanging sawetara algoritma bisa ditrapake kanggo jinis palindrom liyane ing Jawa. Napa sampeyan pengin nggoleki palindrom? Nyatane, kita ora kudu kerep golek palindrom ing urip saben dina. Iki minangka tugas sing spesifik banget. Yen kita ngelingi algoritma senar, luwih asring ing praktik, programer bisa nemokake substring ing senar, lan ora nggoleki palindrom utawa nomere. Nanging, masalah sing ana gandhengane karo palindrom duwe aplikasi penting. Sing pertama yaiku pemrograman olimpiade. Bisa uga ana tugas kanggo ngenali palindrom. Aplikasi kapindho sing cocog kanggo programer pemula yaiku wawancara. Ing wawancara teknis, sampeyan bisa uga dijaluk cepet nulis program kanggo mriksa yen senar palindrome, Mungkin malah ing Piece saka kertas. Ya, ing ilmu pengetahuan, aplikasi paling praktis kanggo nemokake palindrom yaiku algoritma biologi. Miturut Wikipedia, palindromisitas senyawa biologi nduweni peran penting ing sifat-sifat senyawa biologis.

Tuladha kode algoritma Palindrome

Ayo dipikir. String minangka urutan karakter, bisa uga diarani, array char. Iku bakal paling logis kanggo tindakake urutan iki saka loro-lorone menyang tengah lan mbandhingaké karakter nemen. Yen nganti tekan tengah kabeh karakter kita bakal cocog, banjur kita duwe palindrome. Ayo nggawe metode boolean validPalindrome(String s) kanggo mriksa yen String iku palindrome. Kode Jawa kene:

public class PalindromeTest1 {

//method to check if a string is palindrome    
public static boolean validPalindrome(String s) {
       for (int i = 0, j = s.length() - 1; i < j; i++, j--) {
           if (s.charAt(i) != s.charAt(j)) {
               return false;
           }
       }
       return true;
   }

   public static void main(String[] args) {
       String s1 = "level";
       String s2 = "cool";
       String s3 = "Madam";
       String s4 = "Now, sir, a war is won!"
       boolean b1 = validPalindrome(s1);
       boolean b2 = validPalindrome(s2);
       boolean b3 = validPalindrome(s3);
       boolean b4 = validPalindrome(s4);
       System.out.println("is " + s1 + " a palindrome? " + b1);
       System.out.println("is " + s2 + " a palindrome? " + b2);
       System.out.println("is " + s3 + " a palindrome? " + b3);
       System.out.println("is " + s4 + " a palindrome? " + b4);


   }

}
Ing cara utama, kita mriksa strings palindromic "tingkat", "kelangan", "Madam" lan "Saiki, Pak, perang wis menang!". Nalika sampeyan bisa ndeleng, pisanan, katelu lan papat iku palindromes, nanging liya ora. Apa program bakal menehi?
iku level palindrome? bener iku palindrome? palsu apa Madam palindrome? palsu Saiki, Pak, perang wis menang! palindrome? palsu
Dadi, sing pisanan yaiku palindrome, sing nomer loro ora. Nanging, apa sing salah karo nomer telu lan kaping papat? Kok hasile palsu ? Sampeyan mbokmenawa wis guessed sing titik iku sawetara karakter ing senar iki huruf gedhe lan sawetara huruf cilik, lan kanggo Jawa M lan m loro karakter beda. Ayo nambah program kanggo njupuk prabédan iki. Punika program kanggo mriksa yen senar iku palindrome sing solves masalah gedhe lan cilik.

public class PalindromeTest2 {

   //lowercase and uppercase characters should be treated the same:
   public static boolean validPalindrome(String s) {
       for (int i = 0, j = s.length() - 1; i < j; i++, j--) {
           if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j)))
               return false;
       }
       return true;
   }

   public static void main(String[] args) {
       String s1 = "level";
       String s2 = "cool";
       String s3 = "Madam";
        String s4 = "Now, sir, a war is won!"
       boolean b1 = validPalindrome(s1);
       boolean b2 = validPalindrome(s2);
       boolean b3 = validPalindrome(s3);
       boolean b4 = validPalindrome(s4);
       System.out.println("is " + s1 + " a palindrome? " + b1);
       System.out.println("is " + s2 + " a palindrome? " + b2);
       System.out.println("is " + s3 + " a palindrome? " + b3);
       System.out.println("is " + s4 + " a palindrome? " + b4);


   }

}
Wektu iki asile luwih bisa diprediksi kanggo kita:
iku level palindrome? bener iku palindrome? palsu apa Madam palindrome? bener iku Saiki, Pak, perang wis menang! palindrome? palsu
Nah…ora bisa ditebak. Kahanan karo "Madam" saya apik, nanging apa karo palindrome dawa lan seneng "Saiki, Pak, perang wis menang!". Cukup gampang, yen sampeyan ngelingi kabeh spasi lan simbol tandha padha karo aksara Jawa. Dadi kita kudu nambah algoritma maneh kanggo mbenerake pengawasan iki. Ayo mulang program kita kanggo nglirwakake spasi lan tanda baca. Cukup, kita nglirwakake kabeh karakter non-alfanumerik. Iki minangka program palindrom sing luwih apik ing Jawa.

public class PalindromeTest3 {

   //in addition to the above, ignore all non alphanumeric chars like punctuation and spaces
   private static boolean isAlphanumeric(char c) {
       return Character.isAlphabetic(c) || Character.isDigit(c);
   }

   public static boolean validPalindromeIgnorePunctuation(String s) {
       for (int i = 0, j = s.length() - 1; i < j; i++, j--) {
           // skip chars we should ignore
           while (j >= 0 && !isAlphanumeric(s.charAt(j))) j--;
           while (i < s.length() && !isAlphanumeric(s.charAt(i))) i++;
           // overskipped -> nothing left to validate
           if (i >= j) return true;

           if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j)))
               return false;
       }
       return true;
   }


   public static void main(String[] args) {
       String s1 = "level";
       String s2 = "cool";
       String s3 = "Madam";
       String s4 = "Now, sir, a war is won!";
       boolean b1 = validPalindromeIgnorePunctuation(s1);
       boolean b2 = validPalindromeIgnorePunctuation(s2);
       boolean b3 = validPalindromeIgnorePunctuation(s3);
       boolean b4 = validPalindromeIgnorePunctuation(s4);
       System.out.println("is " + s1 + " a palindrome? " + b1);
       System.out.println("is " + s2 + " a palindrome? " + b2);
       System.out.println("is " + s3 + " a palindrome? " + b3);
       System.out.println("is " + s4 + " a palindrome? " + b4);


   }

}
Paling ora asil sing dikarepake saka iku:
iku level palindrome? bener iku palindrome? palsu apa Madam palindrome? bener iku Saiki, Pak, perang wis menang! palindrome? bener
Mbok, yen sampeyan lagi miwiti kanggo program, iku angel kanggo ngerti carane traversal string lan algoritma comparison bisa. Mesthi, iku luwih apik kanggo menehi hasil karo iki, nanging sampeyan bisa nulis versi simplified saka banget wacana liwat Uploaded karakter, kang nyatane senar. Sampeyan bisa nggunakake cara StringBuffer.reverse kanggo mriksa yen senar iku palindrome. Ayo nggawe versi paling gampang tanpa mriksa simbol non-alfanumerik lan huruf gedhe lan cilik.

public class PalindromeTest5 {

   public static boolean validPalindrome(String s) {

       StringBuffer buffer = new StringBuffer(s);
       buffer.reverse();
       String data = buffer.toString();

       if (s.equals(data)) {
           return true;
       }
       return false;
   }
   public static void main(String[] args) {
       String s1 = "level";
       String s2 = "cool";
       String s3 = "Madam";
       String s4 = "Now, sir, a war is won!";
       boolean b1 = validPalindrome(s1);
       boolean b2 = validPalindrome(s2);
       boolean b3 = validPalindrome(s3);
       boolean b4 = validPalindrome(s4);
       System.out.println("is " + s1 + " a palindrome? " + b1);
       System.out.println("is " + s2 + " a palindrome? " + b2);
       System.out.println("is " + s3 + " a palindrome? " + b3);
       System.out.println("is " + s4 + " a palindrome? " + b4);


   }
}
Asil padha kaya ing conto pisanan
iku level palindrome? bener iku palindrome? palsu apa Madam palindrome? palsu Saiki, Pak, perang wis menang! palindrome? palsu
Yen sampeyan pengin, sampeyan bisa nambah program iki kayata kita nindakake karo conto pisanan. Kanggo nguatake apa sing sampeyan sinau, disaranake sampeyan nonton video pelajaran saka Kursus Jawa
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION