C ++, Python, C sau JavaScript: indiferent pe care îl utilizați, utilizați acest algoritm pentru a determina șiruri simetrice.
Se spune că un șir este simetric dacă ambele jumătăți ale șirului sunt aceleași. În acest articol, veți învăța un algoritm pentru a determina dacă un șir dat este simetric sau nu. De asemenea, veți învăța cum să implementați acest algoritm în cele mai populare limbaje de programare precum C ++, Python, C și JavaScript.
Declarație problemă
Ți se dă un șir. Trebuie să determinați dacă șirul dat este simetric sau nu.
Exemplul 1: Let str = "abab".
Date sunt simetrice, deoarece ambele jumătăți ale șirului sunt aceleași.
Astfel, ieșirea este „Da, șirul dat este simetric”.
Exemplul 2: Let str = "madam".
Dacă lungimea șirului este impar, caracterul de mijloc al șirului este ignorat. Prin urmare, prima jumătate = "ma" și a doua jumătate = "am". Cele două jumătăți nu sunt la fel.
Astfel, ieșirea este „Nu, șirul dat nu este simetric”.
Exemplul 3: Let str = "madma".
Prima jumătate = "ma" și a doua jumătate = "ma". Ambele jumătăți ale șirului sunt la fel.
Astfel, ieșirea este „Da, șirul dat este simetric”.
Algoritm pentru a determina dacă un șir dat este simetric sau nu
Puteți determina dacă un șir dat este simetric sau nu urmând abordarea de mai jos:
- Găsiți lungimea șirului.
- Găsiți midIndexul șirului.
- Dacă lungimea șirului este uniformă, midIndex = lungime / 2.
- Dacă lungimea șirului este impar, midIndex = (lungime / 2) + 1. În acest caz, caracterul de mijloc al șirului este ignorat pentru comparație.
- Inițializați două variabile ale indicatorului pointer1 și pointer2. pointer1 va stoca indexul primului caracter (0) al șirului și pointer2 va stoca indexul caracterului de mijloc (midIndex) al șirului.
- Acum comparați caracterele corespunzătoare ale ambelor jumătăți ale șirului folosind un in timp ce buclă. Rulați un in timp ce bucla până pointer1.
- Comparați caracterele corespunzătoare la indexuri pointer1 și pointer2.
- Dacă un caracter corespunzător este găsit diferit, reveniți fals. Și dacă nu se găsesc caractere corespunzătoare diferite, reveniți Adevărat.
- De asemenea, asigurați-vă că creșteți valoarea pointer1 și pointer2 în fiecare iterație.
Program C ++ pentru a determina dacă un șir dat este simetric sau nu
Mai jos este programul C ++ pentru a determina dacă un șir dat este simetric sau nu:
// Program C ++ pentru a verifica dacă șirul este simetric sau nu
#include
folosind spațiul de nume std;
// Funcție pentru a verifica dacă șirul este simetric sau nu
bool este Simetric (str string)
{
int midIndex;
lungime int = str.length ();
// Dacă lungimea șirului este uniformă
if (lungime% 2 == 0)
{
midIndex = lungime / 2;
}
// Dacă lungimea șirului este impar
altceva
{
midIndex = lungime / 2 + 1;
}
pointer int1 = 0;
int pointer2 = midIndex;
while (pointer1{
if (str [pointer1] == str [pointer2])
{
pointer1 + = 1;
pointer2 + = 1;
}
altceva
{
returnează fals;
}
}
întoarce-te adevărat;
}
// Cod șofer
int main ()
{
// Caz de testare: 1
șir str1 = "abab";
cout << "Șirul 1:" << str1 << endl;
if (isSimetric (str1))
{
cout << "Da, șirul dat este simetric" << endl;
}
altceva
{
cout << "Nu, șirul dat nu este simetric" << endl;
}
// Caz de testare: 2
string str2 = "doamna";
cout << "Șirul 2:" << str2 << endl;
if (isSimetric (str2))
{
cout << "Da, șirul dat este simetric" << endl;
}
altceva
{
cout << "Nu, șirul dat nu este simetric" << endl;
}
// Caz de testare: 3
string str3 = "madma";
cout << "Șirul 3:" << str3 << endl;
if (isSimetric (str3))
{
cout << "Da, șirul dat este simetric" << endl;
}
altceva
{
cout << "Nu, șirul dat nu este simetric" << endl;
}
// Caz de testare: 4
string str4 = "civic";
cout << "Șirul 4:" << str4 << endl;
if (isSimetric (str4))
{
cout << "Da, șirul dat este simetric" << endl;
}
altceva
{
cout << "Nu, șirul dat nu este simetric" << endl;
}
// Caz de testare: 5
șir str5 = "khokho";
cout << "Șirul 5:" << str5 << endl;
if (isSimetric (str5))
{
cout << "Da, șirul dat este simetric" << endl;
}
altceva
{
cout << "Nu, șirul dat nu este simetric" << endl;
}
retur 0;
}
Ieșire:
Șirul 1: abab
Da, șirul dat este simetric
Șirul 2: doamnă
Nu, șirul dat nu este simetric
Șirul 3: madma
Da, șirul dat este simetric
Șirul 4: civic
Nu, șirul dat nu este simetric
Șirul 5: khokho
Da, șirul dat este simetric
Legate de: Cum se inversează un șir în C ++, Python și JavaScript
Program Python pentru a determina dacă un șir dat este simetric sau nu
Mai jos este programul Python pentru a determina dacă un șir dat este simetric sau nu:
# Programul Python pentru a verifica dacă șirul este simetric sau nu
# Funcție pentru a verifica dacă șirul este simetric sau nu
def isSimetric (str):
midIndex = 0
lungime = len (str)
dacă lungimea% 2 == 0:
midIndex = lungime // 2
altceva:
midIndex = lungime // 2 + 1
pointer1 = 0
pointer2 = midIndex
în timp ce pointer1if (str [pointer1] == str [pointer2]):
pointer1 + = 1
pointer2 + = 1
altceva:
returnează Fals
întoarce Adevărat
# Caz de testare: 1
str1 = "abab"
print ("Șirul 1:", str1)
if (isSimetric (str1)):
print („Da, șirul dat este simetric”)
altceva:
print („Nu, șirul dat nu este simetric”)
# Caz de testare: 2
str2 = "doamna"
print ("Șirul 2:", str2)
if (isSimetric (str2)):
print („Da, șirul dat este simetric”)
altceva:
print („Nu, șirul dat nu este simetric”)
# Caz de testare: 3
str3 = "madma"
print ("Șirul 3:", str3)
if (isSimetric (str3)):
print („Da, șirul dat este simetric”)
altceva:
print („Nu, șirul dat nu este simetric”)
# Caz de testare: 4
str4 = "civic"
print ("Șirul 4:", str4)
if (isSimetric (str4)):
print („Da, șirul dat este simetric”)
altceva:
print („Nu, șirul dat nu este simetric”)
# Caz de testare: 5
str5 = "khokho"
print ("Șirul 5:", str5)
if (isSimetric (str5)):
print („Da, șirul dat este simetric”)
altceva:
print („Nu, șirul dat nu este simetric”)
Ieșire:
Șirul 1: abab
Da, șirul dat este simetric
Șirul 2: doamnă
Nu, șirul dat nu este simetric
Șirul 3: madma
Da, șirul dat este simetric
Șirul 4: civic
Nu, șirul dat nu este simetric
Șirul 5: khokho
Da, șirul dat este simetric
Legate de: Învățați Python? Iată Cum se manipulează șirurile
Program JavaScript pentru a determina dacă un șir dat este simetric sau nu
Mai jos este programul JavaScript pentru a determina dacă un șir dat este simetric sau nu:
// Program JavaScript pentru a verifica dacă șirul este simetric sau nu
// Funcție pentru a verifica dacă șirul este simetric sau nu
funcția esteSimetrică (str) {
var midIndex;
var length = str.length;
// Dacă lungimea șirului este uniformă
if (lungime% 2 == 0) {
midIndex = Math.floor (lungime / 2);
}
// Dacă lungimea șirului este impar
altceva {
midIndex = Math.floor (lungime / 2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
while (pointer1if (str [pointer1] == str [pointer2]) {
pointer1 + = 1;
pointer2 + = 1;
} altceva {
returnează fals;
}
}
întoarce-te adevărat;
}
// Caz de testare: 1
var str1 = "abab";
document.write ("Șirul 1:" + str1 + "
");
if (isSimetric (str1)) {
document.write ("Da, șirul dat este simetric" + "
");
} altceva {
document.write ("Nu, șirul dat nu este simetric" + "
");
}
// Caz de testare: 2
var str2 = "doamna";
document.write ("Șirul 2:" + str2 + "
");
if (isSimetric (str2)) {
document.write ("Da, șirul dat este simetric" + "
");
} altceva {
document.write ("Nu, șirul dat nu este simetric" + "
");
}
// Caz de testare: 3
var str3 = "madma";
document.write ("Șirul 3:" + str3 + "
");
if (isSimetric (str3)) {
document.write ("Da, șirul dat este simetric" + "
");
} altceva {
document.write ("Nu, șirul dat nu este simetric" + "
");
}
// Caz de testare: 4
var str4 = "civic";
document.write ("Șirul 4:" + str4 + "
");
if (isSimetric (str4)) {
document.write ("Da, șirul dat este simetric" + "
");
} altceva {
document.write ("Nu, șirul dat nu este simetric" + "
");
}
// Caz de testare: 5
var str5 = "khokho";
document.write ("Șirul 5:" + str5 + "
");
if (isSimetric (str5)) {
document.write ("Da, șirul dat este simetric" + "
");
} altceva {
document.write ("Nu, șirul dat nu este simetric" + "
");
}
Ieșire:
Șirul 1: abab
Da, șirul dat este simetric
Șirul 2: doamnă
Nu, șirul dat nu este simetric
Șirul 3: madma
Da, șirul dat este simetric
Șirul 4: civic
Nu, șirul dat nu este simetric
Șirul 5: khokho
Da, șirul dat este simetric
Legate de: Cum să găsiți cel mai frecvent personaj dintr-un șir
Rezolvați problemele pe baza șirurilor
Corzile sunt unul dintre cele mai importante subiecte pentru programarea interviurilor. Trebuie să rezolvați unele dintre celebrele probleme de programare bazate pe șiruri, cum ar fi verificați dacă un șir este un palindrom, verificați dacă două șiruri de caractere sunt anagramele celeilalte, găsiți cel mai frecvent caracter dintr-un șir, inversați un șir, etc. dacă doriți să fiți complet pregătiți.
Șirul tău este un palindrom? Fie că utilizați Python, C ++ sau JavaScript, folosiți unul dintre acești algoritmi pentru a afla.
Citiți în continuare
- Programare
- JavaScript
- Piton
- Tutoriale de codare
- Programare C
Yuvraj este student la Universitatea din Delhi, India. Este pasionat de dezvoltarea web Full Stack. Când nu scrie, explorează profunzimea diferitelor tehnologii.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Faceți clic aici pentru a vă abona