Napisao Yuvraj Chandra
UdioCvrkutE-mail

C ++, Python, C ili JavaScript: bez obzira na to što koristite, koristite ovaj algoritam za određivanje simetričnih nizova.

Za strunu se kaže da je simetrična ako su obje polovice niza iste. U ovom ćete članku naučiti algoritam za određivanje je li određeni niz simetričan ili nije. Također ćete naučiti kako implementirati ovaj algoritam u najpopularnije programske jezike kao što su C ++, Python, C i JavaScript.

Izjava o problemu

Dobio si niz. Morate utvrditi je li zadani niz simetričan ili nije.

Primjer 1: Neka str = "abab".

Dato je simetrično jer su obje polovice žice iste.

Dakle, izlaz je "Da, zadani je niz simetričan".

Primjer 2: Neka str = "madam".

Ako je duljina niza neparna, zanemaruje se srednji znak niza. Prema tome, 1. poluvrijeme = "ma" i 2. poluvrijeme = "am". Dvije polovice nisu iste.

Dakle, izlaz je "Ne, zadani niz nije simetričan".

Primjer 3: Neka str = "madma".

1. poluvrijeme = "ma" i drugo poluvrijeme = "ma". Obje polovice niza su iste.

instagram viewer

Dakle, izlaz je "Da, zadani je niz simetričan".

Algoritam za određivanje je li dati niz simetričan ili nije

Slijedom donjeg pristupa možete utvrditi je li određeni niz simetričan ili nije:

  1. Pronađite duljinu niza.
  2. Pronađite midIndex niza.
    • Ako je duljina niza parna, midIndex = duljina / 2.
    • Ako je duljina niza neparna, midIndex = (dužina / 2) + 1. U ovom se slučaju za usporedbu zanemaruje srednji znak niza.
  3. Inicijalizirajte dvije varijable pokazivača pokazivač1 i pokazivač2. pokazivač1 pohranit će indeks prvog znaka (0) niza i pokazivač2 pohranit će indeks srednjeg znaka (midIndex) niza.
  4. Sada usporedite odgovarajuće znakove obje polovice niza pomoću a dok petlja. Pokrenite a dok petlja do pokazivač1.
  5. Usporedite odgovarajuće znakove u indeksima pokazivač1 i pokazivač2.
  6. Ako se utvrdi da se bilo koji odgovarajući znak razlikuje, vratite se lažno. A ako se ne pronađu odgovarajući znakovi koji se razlikuju, vratite se pravi.
  7. Također, pripazite da povećate vrijednost pokazivač1 i pokazivač2 u svakoj iteraciji.

C ++ program za određivanje je li dati niz simetričan ili nije

Ispod je program C ++ za određivanje je li određeni niz simetričan ili nije:

// C ++ program za provjeru je li niz simetričan ili nije
#include
pomoću prostora imena std;
// Funkcija za provjeru je li niz simetričan ili nije
bool isSymmetrical (string str)
{
int midIndex;
int dužina = str.length ();
// Ako je duljina niza parna
ako (duljina% 2 == 0)
{
midIndex = duljina / 2;
}
// Ako je duljina niza neparna
drugo
{
midIndex = duljina / 2 + 1;
}
int pokazivač1 = 0;
int pokazivač2 = midIndex;
dok (pokazivač1{
ako (str [pokazivač1] == str [pokazivač2])
{
pokazivač1 += 1;
pokazivač2 += 1;
}
drugo
{
return false;
}
}
return true;
}
// Šifra vozača
int main ()
{
// Testni slučaj: 1
niz str1 = "abab";
cout << "Niz 1:" << str1 << endl;
if (jeSimetrično (str1))
{
cout << "Da, zadani je niz simetričan" << endl;
}
drugo
{
cout << "Ne, zadani niz nije simetričan" << endl;
}
// Testni slučaj: 2
niz str2 = "gospođo";
cout << "Niz 2:" << str2 << endl;
if (jeSimetrično (str2))
{
cout << "Da, zadani je niz simetričan" << endl;
}
drugo
{
cout << "Ne, zadani niz nije simetričan" << endl;
}
// Ispitni slučaj: 3
niz str3 = "madma";
cout << "Niz 3:" << str3 << endl;
if (jeSimetrično (str3))
{
cout << "Da, zadani je niz simetričan" << endl;
}
drugo
{
cout << "Ne, zadani niz nije simetričan" << endl;
}
// Testni slučaj: 4
niz str4 = "građanski";
cout << "Niz 4:" << str4 << endl;
if (jeSimetrično (str4))
{
cout << "Da, zadani je niz simetričan" << endl;
}
drugo
{
cout << "Ne, zadani niz nije simetričan" << endl;
}
// Testni slučaj: 5
niz str5 = "khokho";
cout << "Niz 5:" << str5 << endl;
if (jeSimetrično (str5))
{
cout << "Da, zadani je niz simetričan" << endl;
}
drugo
{
cout << "Ne, zadani niz nije simetričan" << endl;
}
return 0;
}

Izlaz:

Niz 1: abab
Da, dani niz je simetričan
2. niz: gospođo
Ne, zadani niz nije simetričan
3. niz: madma
Da, dani niz je simetričan
Niz 4: građanski
Ne, zadani niz nije simetričan
Niz 5: khokho
Da, dani niz je simetričan

Povezano: Kako obrnuti niz u C ++, Python i JavaScript

Python program za utvrđivanje je li dati niz simetričan ili nije

Ispod je program Python za određivanje je li dati niz simetričan ili nije:

# Python program za provjeru je li niz simetričan ili nije
# Funkcija za provjeru je li niz simetričan ili nije
def isSymmetrical (str):
midIndex = 0
duljina = len (str)
ako je duljina% 2 == 0:
midIndex = duljina // 2
drugo:
midIndex = duljina // 2 + 1
pokazivač1 = 0
pokazivač2 = midIndex
dok pokazivač1if (str [pokazivač1] == str [pokazivač2]):
pokazivač1 + = 1
pokazivač2 + = 1
drugo:
povratak False
povratak True
# Test slučaj: 1
str1 = "abab"
ispis ("Niz 1:", str1)
if (jeSimetrično (str1)):
print ("Da, zadani je niz simetričan")
drugo:
print ("Ne, zadani niz nije simetričan")
# Test slučaj: 2
str2 = "gospođo"
ispis ("Niz 2:", str2)
if (jeSimetrično (str2)):
print ("Da, zadani je niz simetričan")
drugo:
print ("Ne, zadani niz nije simetričan")
# Test slučaj: 3
str3 = "madma"
ispis ("Niz 3:", str3)
if (jeSimetrično (str3)):
print ("Da, zadani je niz simetričan")
drugo:
print ("Ne, zadani niz nije simetričan")
# Test slučaj: 4
str4 = "građanski"
ispis ("Niz 4:", str4)
if (jeSimetrično (str4)):
print ("Da, zadani je niz simetričan")
drugo:
print ("Ne, zadani niz nije simetričan")
# Test slučaj: 5
str5 = "khokho"
ispis ("Niz 5:", str5)
if (jeSimetrično (str5)):
print ("Da, zadani je niz simetričan")
drugo:
print ("Ne, zadani niz nije simetričan")

Izlaz:

Niz 1: abab
Da, dani niz je simetričan
2. niz: gospođo
Ne, zadani niz nije simetričan
3. niz: madma
Da, dani niz je simetričan
Niz 4: građanski
Ne, zadani niz nije simetričan
Niz 5: khokho
Da, dani niz je simetričan

Povezano: Učenje Pythona? Evo kako manipulirati žicama

JavaScript program za određivanje je li dati niz simetričan ili nije

Ispod je JavaScript program za određivanje je li određeni niz simetričan ili nije:

// JavaScript program za provjeru je li niz simetričan ili nije
// Funkcija za provjeru je li niz simetričan ili nije
funkcija jeSimetrična (str) {
var midIndex;
var length = str.length;
// Ako je duljina niza parna
if (duljina% 2 == 0) {
midIndex = Math.floor (duljina/2);
}
// Ako je duljina niza neparna
inače {
midIndex = Math.floor (duljina/2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
dok (pokazivač1ako (str [pokazivač1] == str [pokazivač2]) {
pokazivač1 += 1;
pokazivač2 += 1;
} else {
return false;
}
}
return true;
}
// Testni slučaj: 1
var str1 = "abab";
document.write ("Niz 1:" + str1 + "
");
if (isSimetrično (str1)) {
document.write ("Da, zadani niz je simetričan" + "
");
} else {
document.write ("Ne, zadani niz nije simetričan" + "
");
}
// Testni slučaj: 2
var str2 = "gospođa";
document.write ("Niz 2:" + str2 + "
");
if (isSimetrično (str2)) {
document.write ("Da, zadani niz je simetričan" + "
");
} else {
document.write ("Ne, zadani niz nije simetričan" + "
");
}
// Ispitni slučaj: 3
var str3 = "madma";
document.write ("Niz 3:" + str3 + "
");
if (isSimetrično (str3)) {
document.write ("Da, zadani niz je simetričan" + "
");
} else {
document.write ("Ne, zadani niz nije simetričan" + "
");
}
// Testni slučaj: 4
var str4 = "građanski";
document.write ("Niz 4:" + str4 + "
");
if (isSimetrično (str4)) {
document.write ("Da, zadani niz je simetričan" + "
");
} else {
document.write ("Ne, zadani niz nije simetričan" + "
");
}
// Testni slučaj: 5
var str5 = "khokho";
document.write ("String 5:" + str5 + "
");
if (isSimetrično (str5)) {
document.write ("Da, zadani niz je simetričan" + "
");
} else {
document.write ("Ne, zadani niz nije simetričan" + "
");
}

Izlaz:

Niz 1: abab
Da, dani niz je simetričan
2. niz: gospođo
Ne, zadani niz nije simetričan
3. niz: madma
Da, dani niz je simetričan
Niz 4: građanski
Ne, zadani niz nije simetričan
Niz 5: khokho
Da, dani niz je simetričan

Povezano: Kako pronaći najčešći lik u nizu

Rješavanje problema na temelju nizova

Gudači su jedna od najvažnijih tema za programiranje intervjua. Morate riješiti neke od poznatih programskih problema na temelju nizova, poput provjere je li niz palindrom, provjerite ako su dva niza anagrami jedan drugog, pronađite znak koji se najčešće pojavljuje u nizu, preokrenite niz, itd. ako želite biti potpuno spremni.

UdioCvrkutE-mail
Kako provjeriti je li niz žica palindrom

Je li vaša žica palindrom? Koristite li Python, C ++ ili JavaScript, upotrijebite jedan od ovih algoritama da biste saznali.

Pročitajte Dalje

Povezane teme
  • Programiranje
  • JavaScript
  • Piton
  • Vodiči za kodiranje
  • C Programiranje
O autoru
Yuvraj Chandra (Objavljeno 50 članaka)

Yuvraj je student preddiplomskog studija Računarstva na Sveučilištu u Delhiju u Indiji. Oduševljen je Full Stack web razvojem. Kad ne piše, istražuje dubinu različitih tehnologija.

Više od Yuvraja Chandre

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Kliknite ovdje da biste se pretplatili