Comment vérifier si une chaîne est symétrique avec la programmation
Une chaîne est dite symétrique si les deux moitiés de la chaîne sont identiques. Dans cet article, vous apprendrez un algorithme pour déterminer si une chaîne donnée est symétrique ou non. Vous apprendrez également à implémenter cet algorithme dans les langages de programmation les plus populaires tels que C++, Python, C et JavaScript.
Énoncé du problème
On vous donne une chaîne. Vous devez déterminer si la chaîne donnée est symétrique ou non.
Exemple 1 : Soit str = "abab".
Le donné est symétrique car les deux moitiés de la corde sont les mêmes.
Ainsi, la sortie est "Oui, la chaîne donnée est symétrique".
Exemple 2 : Soit str = "Madame".
Si la longueur de la chaîne est impaire, le caractère du milieu de la chaîne est ignoré. Par conséquent, 1ère moitié = "ma" et 2ème moitié = "am". Les deux moitiés ne sont pas les mêmes.
Ainsi, la sortie est "Non, la chaîne donnée n'est pas symétrique".
Exemple 3 : Soit str = "madma".
1ère moitié = "ma" et 2ème moitié = "ma". Les deux moitiés de la chaîne sont les mêmes.
Ainsi, la sortie est "Oui, la chaîne donnée est symétrique".
Algorithme pour déterminer si une chaîne donnée est symétrique ou non
Vous pouvez déterminer si une chaîne donnée est symétrique ou non en suivant l'approche ci-dessous :
- Trouvez la longueur de la chaîne.
- Trouvez le midIndex de la chaîne.
- Si la longueur de la chaîne est paire, midIndex = length/2 .
- Si la longueur de la chaîne est impaire, midIndex = (length/2) + 1 . Dans ce cas, le caractère central de la chaîne est ignoré pour la comparaison.
- Initialisez deux variables pointeur pointer1 et pointer2 . pointer1 stockera l'index du premier caractère (0) de la chaîne et pointer2 stockera l'index du caractère du milieu (midIndex) de la chaîne.
- Maintenant , comparez les caractères correspondants des deux moitiés de la chaîne en utilisant une boucle while. Exécuter une boucle while jusqu'à pointer1 <midIndex et pointer2 <lengthOfString.
- Comparer les caractères correspondant à des indices pointer1 et pointer2.
- Si un caractère correspondant est trouvé différent, retourne false . Et si aucun caractère correspondant n'est différent, retourne true .
- De plus, assurez – vous d'augmenter à chaque itération la valeur de pointer1 et pointer2.
Programme C++ pour déterminer si une chaîne donnée est symétrique ou non
Vous trouverez ci-dessous le programme C++ pour déterminer si une chaîne donnée est symétrique ou non :
// C++ program to check whether the string is symmetrical or not
#include <iostream>
using namespace std;
// Function to check whether the string is symmetrical or not
bool isSymmetrical(string str)
{
int midIndex;
int length = str.length();
// If the length of string is even
if (length % 2 == 0)
{
midIndex = length/2;
}
// If the length of string is odd
else
{
midIndex = length/2 + 1;
}
int pointer1 = 0;
int pointer2 = midIndex;
while(pointer1<midIndex && pointer2<length)
{
if(str[pointer1] == str[pointer2])
{
pointer1 += 1;
pointer2 += 1;
}
else
{
return false;
}
}
return true;
}
// Driver Code
int main()
{
// Test case: 1
string str1 = "abab";
cout << "String 1: " << str1 << endl;
if (isSymmetrical(str1))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 2
string str2 = "madam";
cout << "String 2: " << str2 << endl;
if (isSymmetrical(str2))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 3
string str3 = "madma";
cout << "String 3: " << str3 << endl;
if (isSymmetrical(str3))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 4
string str4 = "civic";
cout << "String 4: " << str4 << endl;
if (isSymmetrical(str4))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 5
string str5 = "khokho";
cout << "String 5: " << str5 << endl;
if (isSymmetrical(str5))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
return 0;
}
Production:
String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical
Programme Python pour déterminer si une chaîne donnée est symétrique ou non
Vous trouverez ci-dessous le programme Python pour déterminer si une chaîne donnée est symétrique ou non :
# Python program to check whether the string is symmetrical or not
# Function to check whether the string is symmetrical or not
def isSymmetrical(str):
midIndex = 0
length = len(str)
if length%2 == 0:
midIndex = length//2
else:
midIndex = length//2 + 1
pointer1 = 0
pointer2 = midIndex
while pointer1<midIndex and pointer2<length:
if (str[pointer1] == str[pointer2]):
pointer1 += 1
pointer2 += 1
else:
return False
return True
# Test case: 1
str1 = "abab"
print("String 1:", str1)
if (isSymmetrical(str1)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 2
str2 = "madam"
print("String 2:", str2)
if (isSymmetrical(str2)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 3
str3 = "madma"
print("String 3:", str3)
if (isSymmetrical(str3)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 4
str4 = "civic"
print("String 4:", str4)
if (isSymmetrical(str4)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 5
str5 = "khokho"
print("String 5:", str5)
if (isSymmetrical(str5)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
Production:
String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical
Programme JavaScript pour déterminer si une chaîne donnée est symétrique ou non
Vous trouverez ci-dessous le programme JavaScript pour déterminer si une chaîne donnée est symétrique ou non :
// JavaScript program to check whether the string is symmetrical or not
// Function to check whether the string is symmetrical or not
function isSymmetrical(str) {
var midIndex;
var length = str.length;
// If the length of string is even
if (length % 2 == 0) {
midIndex = Math.floor(length/2);
}
// If the length of string is odd
else {
midIndex = Math.floor(length/2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
while(pointer1<midIndex && pointer2<length) {
if(str[pointer1] == str[pointer2]) {
pointer1 += 1;
pointer2 += 1;
} else {
return false;
}
}
return true;
}
// Test case: 1
var str1 = "abab";
document.write("String 1: " + str1 + "<br>");
if (isSymmetrical(str1)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 2
var str2 = "madam";
document.write("String 2: " + str2 + "<br>");
if (isSymmetrical(str2)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 3
var str3 = "madma";
document.write("String 3: " + str3 + "<br>");
if (isSymmetrical(str3)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 4
var str4 = "civic";
document.write("String 4: " + str4 + "<br>");
if (isSymmetrical(str4)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 5
var str5 = "khokho";
document.write("String 5: " + str5 + "<br>");
if (isSymmetrical(str5)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
Production:
String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical
Résoudre des problèmes basés sur des chaînes
Les cordes sont l'un des sujets les plus importants pour la programmation d'interviews. Vous devez résoudre certains des fameux problèmes de programmation basés sur des chaînes comme vérifier si une chaîne est un palindrome, vérifier si deux chaînes sont des anagrammes l'une de l'autre, trouver le caractère le plus fréquent dans une chaîne, inverser une chaîne, etc. cherchez à être pleinement préparé.