Preverite, ali je niz Palindrome v Javi in ​​Pythonu

Z leti je preverjanje, ali je niz palindrom, postalo klasično vprašanje za kodiranje. To pa zato, ker vključuje koncepte o manipulaciji in primerjanju nizov ter celo zanke, odvisno od izvedbe. Vprašanje ni dolgotrajno, zato ga je mogoče izpolniti v časovnih omejitvah razgovora. Ta članek vključuje izvajanje za preverjanje, ali je niz palindrom v javi in ​​pythonu.

Kaj je palindrom?

Po navedbah synonym.com je opredelitev palindroma "beseda ali besedna zveza, ki se bere enako nazaj kot naprej." V bistvu pomeni, da če besedo ali besedno zvezo napišete v obratni smeri, bo popolnoma enako kot takrat, ko je bila posredovana naprej. Oče in mama sta na primer palindroma, oče in mati pa ne. Beseda "palindrom" izvira iz dveh grških korenskih besed, "palin", kar pomeni spet in "dromos", kar pomeni pot ali smer. V 17. stoletju ga je skoval angleški dramatik Ben Jonson.

Rešitev

  • Najpogostejši in najlažji način za reševanje vprašanja je tako, da najprej spremenite niz in ga nato primerjate z izvirnim nizom. Ta pristop bo O (n) v velikem O zapisu, ker je obračanje niza O (n).
  • Drug način bi bil začeti primerjati znake od začetka in do konca in nadaljevati, dokler ne pridete do sredine. Ta pristop ima časovno zapletenost O (n / 2), v velikem O zapisu pa bo še vedno O (n). Toda prednost tega pristopa je, da lahko False vrnete takoj, ko naletite na prvo neusklajenost, medtem ko je pri prvem pristopu, ker je obračanje niza prvi korak, časovna zapletenost vedno O (n).

Palindrom v implementaciji Pythona

Sledi koda za preverjanje, ali je niz palindrom v pythonu.

def is_palindrome (s): "" "Vrne True, če je dani argument s palindrom, sicer False" "" trdi (isinstance (s, str)), "Argument s ni vrste "# Uveljavi, če je podani argument vrste vrni s [:: - 1] == s # Primerjaj obratno vrstico s samim seboj, če je __name __ == "__ main__": print (is_palindrome ("dad"))def is_palindrome (beseda): "" "Primerja znake enega za drugim od začetka in do konca in vrne False, ko pride do prve neskladnosti ali pa vrne True" "" i1, i2 = 0, len (beseda) -1 # Inicializiraj kazalci, medtem ko i2> i1: če beseda [i1]! = beseda [i2]: # Če se znaki ne ujemajo, potem ni treba nadaljevati vrnitve False i1 + = 1 i2- = 1 vrne True, če __ime __ == "__ main__ ": print (is_palindrome (" očka "))

Palindrom v implementaciji Jave

Sledi koda za preverjanje, ali je niz palindrom v javi.

javni razred Palindrome {javni statični logični isPalindrom (niz str) {StringBuilder sb = nov StringBuilder (str); // StringBuilder ima povratno metodo return sb.reverse (). ToString (). Equals (str); // Primerjaj hrbtno stran niza s samim} public static void main (String args []) {Boolean b = isPalindrome ("dad"); System.out.println (b); }}javni razred Palindrome {javni statični logični isPalindrom (niz str) {int i1 = 0; int i2 = str.length () - 1; while (i2> i1) {if (str.charAt (i1)! = str.charAt (i2)) {return false; } i1 ++; i2--; } vrni true; } public static void main (String args []) {Boolean b = isPalindrome ("dad"); System.out.println (b); }}