Gadu gaitā pārbaude, vai virkne ir palindroms, ir kļuvusi par klasisku intervēšanas kodēšanas jautājumu. Tas ir tāpēc, ka tas ietver virknes manipulācijas un salīdzināšanas jēdzienus un pat cilpas atkarībā no ieviešanas. Jautājums nav garš, tāpēc to var izpildīt intervijas laikā. Šajā rakstā ir iekļauta ieviešana, lai pārbaudītu, vai Java un Python virkne ir palindroma.
Kas ir palindroms?
Saskaņā ar synonym.com, palindroma definīcija ir "vārds vai frāze, kas skan tāpat kā uz priekšu". Būtībā tas nozīmē, ka, rakstot vārdu vai frāzi pretēji, tas būs tieši tāds pats kā tad, kad tas bija uz priekšu. Piemēram, tētis un mamma ir palindromi, bet tēvs un māte nav. Vārds "palindroms" nāk no diviem grieķu saknes vārdiem, "palin" atkal nozīmē un "dromos" nozīmē ceļu vai virzienu. To 17. gadsimtā izveidoja angļu dramaturgs Bens Džonsons.
Risinājums
- Visizplatītākais un vienkāršākais veids, kā atrisināt jautājumu, ir vispirms mainīt virkni un pēc tam salīdzināt to ar sākotnējo virkni. Šī pieeja būs O (n) lielā O apzīmējumā, jo virknes maiņa ir O (n).
- Cits veids būtu sākt salīdzināt rakstzīmes no sākuma un beigām un turpināt, līdz nonākat vidū. Šai pieejai ir laika sarežģītība O (n / 2), bet lielā O apzīmējumā tā joprojām būs O (n). Bet šīs pieejas priekšrocība ir tā, ka jūs varat atgriezt False, tiklīdz saskaraties ar pirmo neatbilstību, turpretī ar pirmo pieeju, jo virknes maiņa ir pirmais solis, laika sarežģītība vienmēr būs O (n).
Palindroms Python ieviešanā
Šis ir kods, lai pārbaudītu, vai virkne ir palindroma pitonā.
def is_palindrome (s): "" "Atgriež Patiesību, ja dotais arguments s ir palindroms, citādi False" "" apgalvo (isinstance (s, str)), "Arguments s nav tipa "# Apstipriniet, vai dotais arguments ir tipa atgriezties s [:: - 1] == s # Salīdziniet virknes reversu ar sevi, ja __name __ == "__ main__": print (is_palindrome ("tētis"))
def is_palindrome (word): "" "Salīdzina rakstzīmes pa vienam no sākuma un beigām un atgriež False, kad rodas pirmā neatbilstība, vai arī atgriež True" "" i1, i2 = 0, len (word) -1 # Initialize kursori, kamēr i2> i1: ja vārds [i1]! = vārds [i2]: # Ja rakstzīmes nesakrīt, tad nav jāturpina tālāk atgriezties False i1 + = 1 i2- = 1 return True, ja __nosaukums __ == "__ main__ ": print (is_palindrome (" tētis "))
Palindroms Java ieviešanā
Šis ir kods, lai pārbaudītu, vai java ir virkne palindromā.
public class Palindrome {public static Boolean isPalindrome (String str) {StringBuilder sb = jauns StringBuilder (str); // StringBuilder ir reversās metodes atgriešanas sb.reverse (). ToString (). Vienāds ar (str); // Salīdziniet virknes reversu ar sevi} public static void main (String args []) {Būla b = isPalindrome ("tētis"); System.out.println (b); }}
publiskā klase Palindrome {public static Boolean isPalindrome (String str) {int i1 = 0; int i2 = str. garums () - 1; while (i2> i1) {if (str.charAt (i1)! = str.charAt (i2)) {return false; } i1 ++; i2--; } return true; } public static void main (String args []) {Būla b = isPalindrome ("tētis"); System.out.println (b); }}