Autorius Yuvraj Chandra
Dalintis„Tweet“Paštu

C ++, Python, C arba JavaScript: nesvarbu, kurį naudojate, naudokite šį algoritmą simetriškoms eilutėms nustatyti.

Stringa sakoma, kad simetriška, jei abi stygos pusės yra vienodos. Šiame straipsnyje sužinosite algoritmą, kad nustatytumėte, ar duota eilutė yra simetriška, ar ne. Taip pat sužinosite, kaip įdiegti šį algoritmą populiariausiose programavimo kalbose, tokiose kaip C ++, Python, C ir JavaScript.

Problemos pareiškimas

Jums duota eilutė. Turite nustatyti, ar nurodyta eilutė yra simetriška, ar ne.

1 pavyzdys: Tegul str = "abab".

Duota simetriška, nes abi stygos pusės yra vienodos.

Taigi išvestis yra „Taip, duota eilutė yra simetriška“.

2 pavyzdys: Tegul str = "ponia".

Jei eilutės ilgis nelyginis, vidurinis eilutės simbolis ignoruojamas. Todėl pirmoji pusė = "ma", o antroji pusė - "am". Abi pusės nėra vienodos.

Taigi išvestis yra „Ne, pateikta eilutė nėra simetriška“.

3 pavyzdys: Tegul str = "madma".

instagram viewer

1-oji pusė = "ma" ir 2-oji pusė = "ma". Abi stygos pusės yra vienodos.

Taigi išvestis yra „Taip, duota eilutė yra simetriška“.

Algoritmas nustatant, ar tam tikra eilutė yra simetriška, ar ne

Galite nustatyti, ar duota eilutė yra simetriška, ar ne, vadovaudamiesi toliau pateiktu metodu:

  1. Raskite eilutės ilgį.
  2. Raskite eilutės „midIndex“.
    • Jei eilutės ilgis yra lygus, midIndex = ilgis / 2.
    • Jei eilutės ilgis nelyginis, midIndex = (ilgis / 2) + 1. Tokiu atveju palyginimui nepaisoma vidurio eilutės simbolio.
  3. Inicializuokite du žymeklio kintamuosius rodyklė1 ir rodyklė2. rodyklė1 išsaugos eilutės pirmojo simbolio (0) rodyklę ir rodyklė2 išsaugos eilutės vidurinio simbolio (midIndex) indeksą.
  4. Dabar palyginkite atitinkamus abiejų eilutės pusių simbolius naudodami a kol kilpa. Vykdyti a kol kilpa iki rodyklė1.
  5. Palyginkite atitinkamus simbolius indeksuose rodyklė1 ir rodyklė2.
  6. Jei bet kuris atitinkamas simbolis yra nepanašus, grįžkite melagingas. Ir jei nėra atitinkamų simbolių, kurie būtų panašūs, grįžkite tiesa.
  7. Be to, nepamirškite padidinti vertės rodyklė1 ir rodyklė2 kiekvienoje iteracijoje.

„C ++“ programa, skirta nustatyti, ar tam tikra eilutė yra simetriška, ar ne

Žemiau yra C ++ programa, skirta nustatyti, ar duota eilutė yra simetriška, ar ne:

// C ++ programa, skirta patikrinti, ar eilutė yra simetriška, ar ne
# įtraukti
naudojant vardų sritį std;
// Funkcija, skirta patikrinti, ar eilutė yra simetriška, ar ne
bool isSimetrinis (eilutė str)
{
int midIndex;
int ilgis = str. ilgis ();
// Jei eilutės ilgis yra lyginis
jei (ilgis% 2 == 0)
{
midIndex = ilgis / 2;
}
// Jei eilutės ilgis nelyginis
Kitas
{
midIndex = ilgis / 2 + 1;
}
int rodyklė1 = 0;
int rodyklė2 = midIndex;
o (rodyklė1{
jei (str [rodyklė1] == str [rodyklė2])
{
rodyklė1 + = 1;
rodyklė2 + = 1;
}
Kitas
{
grąžinti klaidingą;
}
}
grįžti tiesa;
}
// Vairuotojo kodas
int main ()
{
Bandomasis atvejis: 1
eilutė str1 = "abab";
cout << "1 eilutė:" << str1 << endl;
jei (isSimetriškas (str1))
{
cout << "Taip, duota eilutė yra simetriška" << endl;
}
Kitas
{
cout << "Ne, pateikta eilutė nėra simetriška" << endl;
}
Bandomasis atvejis: 2
eilutė str2 = "ponia";
cout << "2 eilutė:" << str2 << endl;
jei (yraSimetriškas (str2))
{
cout << "Taip, duota eilutė yra simetriška" << endl;
}
Kitas
{
cout << "Ne, pateikta eilutė nėra simetriška" << endl;
}
Bandomasis atvejis: 3
eilutė str3 = "madma";
cout << "3 eilutė:" << str3 << endl;
jei (yraSimetriškas (str3))
{
cout << "Taip, duota eilutė yra simetriška" << endl;
}
Kitas
{
cout << "Ne, pateikta eilutė nėra simetriška" << endl;
}
Bandomasis atvejis: 4
eilutė str4 = "pilietinė";
cout << "4 eilutė:" << str4 << endl;
jei (isSimetriškas (str4))
{
cout << "Taip, duota eilutė yra simetriška" << endl;
}
Kitas
{
cout << "Ne, pateikta eilutė nėra simetriška" << endl;
}
Bandomasis atvejis: 5
eilutė str5 = "khokho";
cout << "5 eilutė:" << str5 << endl;
jei (yraSimetriškas (str5))
{
cout << "Taip, duota eilutė yra simetriška" << endl;
}
Kitas
{
cout << "Ne, pateikta eilutė nėra simetriška" << endl;
}
grąžinti 0;
}

Išvestis:

1 eilutė: abab
Taip, pateikta eilutė yra simetriška
2 eilutė: ponia
Ne, pateikta eilutė nėra simetriška
3 eilutė: madma
Taip, pateikta eilutė yra simetriška
4 eilutė: pilietinė
Ne, pateikta eilutė nėra simetriška
5 eilutė: chokho
Taip, pateikta eilutė yra simetriška

Susijęs: Kaip pakeisti eilutę C ++, Python ir JavaScript

„Python“ programa, skirta nustatyti, ar tam tikra eilutė yra simetriška, ar ne

Toliau pateikiama „Python“ programa, skirta nustatyti, ar duota eilutė yra simetriška, ar ne:

# Python programa, norint patikrinti, ar eilutė yra simetriška, ar ne
# Funkcija patikrinti, ar eilutė yra simetriška, ar ne
def isSimetrinis (str):
vidurio rodiklis = 0
ilgis = len (str)
jei ilgis% 2 == 0:
midIndex = ilgis // 2
Kitas:
midIndex = ilgis // 2 + 1
rodyklė1 = 0
pointer2 = midIndex
o rodyklė1jei (str [pointer1] == str [pointer2]):
rodyklė1 + = 1
rodyklė2 + = 1
Kitas:
grąžinti False
grįžti Tiesa
# Bandomasis atvejis: 1
str1 = "ababas"
spausdinti ("1 eilutė:", str1)
jei (isSymmetrical (str1)):
spausdinti ("Taip, duota eilutė yra simetriška")
Kitas:
spausdinti ("Ne, pateikta eilutė nėra simetriška")
# Bandomasis atvejis: 2
str2 = "ponia"
spausdinti ("2 eilutė:", str2)
jei (isSymmetrical (str2)):
spausdinti ("Taip, duota eilutė yra simetriška")
Kitas:
spausdinti ("Ne, pateikta eilutė nėra simetriška")
# Bandomasis atvejis: 3
str3 = "madma"
spausdinti ("3 eilutė:", str3)
jei (isSymmetrical (str3)):
spausdinti ("Taip, duota eilutė yra simetriška")
Kitas:
spausdinti ("Ne, pateikta eilutė nėra simetriška")
# Bandomasis atvejis: 4
str4 = "pilietinis"
spausdinti („4 eilutė:“, str4)
jei (isSymmetrical (str4)):
spausdinti ("Taip, duota eilutė yra simetriška")
Kitas:
spausdinti ("Ne, pateikta eilutė nėra simetriška")
# Bandomasis atvejis: 5
str5 = "Khokho"
spausdinti ("5 eilutė:", str5)
jei (isSymmetrical (str5)):
spausdinti ("Taip, duota eilutė yra simetriška")
Kitas:
spausdinti ("Ne, pateikta eilutė nėra simetriška")

Išvestis:

1 eilutė: abab
Taip, pateikta eilutė yra simetriška
2 eilutė: ponia
Ne, pateikta eilutė nėra simetriška
3 eilutė: madma
Taip, pateikta eilutė yra simetriška
4 eilutė: pilietinė
Ne, pateikta eilutė nėra simetriška
5 eilutė: chokho
Taip, pateikta eilutė yra simetriška

Susijęs: Mokotės „Python“? Štai kaip manipuliuoti stygomis

„JavaScript“ programa, skirta nustatyti, ar tam tikra eilutė yra simetriška, ar ne

Žemiau yra „JavaScript“ programa, skirta nustatyti, ar duota eilutė yra simetriška, ar ne:

// „JavaScript“ programa, skirta patikrinti, ar eilutė yra simetriška, ar ne
// Funkcija, skirta patikrinti, ar eilutė yra simetriška, ar ne
funkcija yraSimetriška (str) {
var midIndex;
var length = str.length;
// Jei eilutės ilgis yra lyginis
jei (ilgis% 2 == 0) {
midIndex = Math.floor (ilgis / 2);
}
// Jei eilutės ilgis nelyginis
Kitas {
midIndex = Math.floor (ilgis / 2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
o (rodyklė1jei (str [pointer1] == str [pointer2]) {
rodyklė1 + = 1;
rodyklė2 + = 1;
} Kitas {
grąžinti klaidingą;
}
}
grįžti tiesa;
}
Bandomasis atvejis: 1
var str1 = "ababas";
document.write ("1 eilutė:" + str1 + "
");
jei (isSimetrinis (str1)) {
document.write ("Taip, duota eilutė yra simetriška" + "
");
} Kitas {
document.write ("Ne, pateikta eilutė nėra simetriška" + "
");
}
Bandomasis atvejis: 2
var str2 = "ponia";
document.write ("2 eilutė:" + str2 + "
");
jei (yraSimetriškas (str2)) {
document.write ("Taip, duota eilutė yra simetriška" + "
");
} Kitas {
document.write ("Ne, pateikta eilutė nėra simetriška" + "
");
}
Bandomasis atvejis: 3
var str3 = "madma";
document.write ("3 eilutė:" + str3 + "
");
if (isSymmetrical (str3)) {
document.write ("Taip, duota eilutė yra simetriška" + "
");
} Kitas {
document.write ("Ne, pateikta eilutė nėra simetriška" + "
");
}
Bandomasis atvejis: 4
var str4 = "pilietinis";
document.write ("4 eilutė:" + str4 + "
");
if (isSymmetrical (str4)) {
document.write ("Taip, duota eilutė yra simetriška" + "
");
} Kitas {
document.write ("Ne, pateikta eilutė nėra simetriška" + "
");
}
Bandomasis atvejis: 5
var str5 = "chokho";
document.write ("5 eilutė:" + str5 + "
");
if (isSymmetrical (str5)) {
document.write ("Taip, duota eilutė yra simetriška" + "
");
} Kitas {
document.write ("Ne, pateikta eilutė nėra simetriška" + "
");
}

Išvestis:

1 eilutė: abab
Taip, pateikta eilutė yra simetriška
2 eilutė: ponia
Ne, pateikta eilutė nėra simetriška
3 eilutė: madma
Taip, pateikta eilutė yra simetriška
4 eilutė: pilietinė
Ne, pateikta eilutė nėra simetriška
5 eilutė: chokho
Taip, pateikta eilutė yra simetriška

Susijęs: Kaip rasti dažniausiai pasitaikančią eilutės veikėją

Išspręskite problemas pagal eilutes

Stygos yra viena iš svarbiausių interviu programavimo temų. Turite išspręsti kai kurias žinomas programavimo problemas, remdamiesi eilutėmis, pvz., Patikrinkite, ar eilutė yra palindromas, patikrinkite jei dvi eilutės yra viena kitos anagramos, raskite dažniausiai pasitaikančią eilutės simbolį, pakeiskite eilutę, ir kt. jei nori būti visiškai pasirengęs.

Dalintis„Tweet“Paštu
Kaip patikrinti, ar stygos yra palindromas

Ar jūsų stygos yra palindromas? Nesvarbu, ar naudojate „Python“, „C ++“ ar „JavaScript“, sužinokite naudodami vieną iš šių algoritmų.

Skaityti toliau

Susijusios temos
  • Programavimas
  • „JavaScript“
  • „Python“
  • Kodavimo vadovėliai
  • C programavimas
Apie autorių
Yuvraj Chandra (Paskelbta 50 straipsnių)

Yuvraj yra kompiuterių bakalauro studentas Delio universitete, Indijoje. Jis aistringai domisi „Full Stack“ interneto plėtra. Kai nerašo, jis tyrinėja įvairių technologijų gylį.

Daugiau iš „Yuvraj Chandra“

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia