Por Yuvraj Chandra
CompartilhadoTweetE-mail

C ++, Python, C ou JavaScript: não importa qual você use, use este algoritmo para determinar strings simétricas.

Uma corda é considerada simétrica se as duas metades da corda forem iguais. Neste artigo, você aprenderá um algoritmo para determinar se uma determinada string é simétrica ou não. Você também aprenderá como implementar esse algoritmo nas linguagens de programação mais populares, como C ++, Python, C e JavaScript.

Declaração do Problema

Você recebe uma string. Você precisa determinar se a string dada é simétrica ou não.

Exemplo 1: Seja str = "abab".

O dado é simétrico, pois as duas metades da string são iguais.

Portanto, a saída é "Sim, a string fornecida é simétrica".

Exemplo 2: Let str = "madam".

Se o comprimento da string for ímpar, o caractere do meio da string será ignorado. Portanto, 1ª metade = "ma" e 2ª metade = "am". As duas metades não são iguais.

Portanto, a saída é "Não, a string fornecida não é simétrica".

Exemplo 3: Seja str = "madma".

1ª metade = "ma" e 2ª metade = "ma". Ambas as metades da corda são iguais.

Portanto, a saída é "Sim, a string fornecida é simétrica".

Algoritmo para determinar se uma determinada string é simétrica ou não

Você pode determinar se uma determinada string é simétrica ou não seguindo a abordagem abaixo:

  1. Encontre o comprimento da corda.
  2. Encontre o midIndex da string.
    • Se o comprimento da corda for uniforme, midIndex = length / 2.
    • Se o comprimento da corda for ímpar, midIndex = (comprimento / 2) + 1. Nesse caso, o caractere do meio da string é ignorado para comparação.
  3. Inicializar duas variáveis ​​de ponteiro ponteiro1 e ponteiro2. ponteiro1 irá armazenar o índice do primeiro caractere (0) da string e ponteiro2 irá armazenar o índice do caractere do meio (midIndex) da string.
  4. Agora compare os caracteres correspondentes de ambas as metades da string usando um enquanto ciclo. Execute um enquanto Loop até ponteiro1.
  5. Compare os caracteres correspondentes nos índices ponteiro1 e ponteiro2.
  6. Se algum caractere correspondente for diferente, retorne falso. E se nenhum caractere correspondente for encontrado diferente, retorne verdadeiro.
  7. Além disso, certifique-se de incrementar o valor de ponteiro1 e ponteiro2 em cada iteração.

Programa C ++ para determinar se uma determinada string é simétrica ou não

Abaixo está o programa C ++ para determinar se uma determinada string é simétrica ou não:

// Programa C ++ para verificar se a string é simétrica ou não
#incluir
usando namespace std;
// Função para verificar se a string é simétrica ou não
bool isSymmetrical (string str)
{
int midIndex;
comprimento int = str.length ();
// Se o comprimento da string for par
if (comprimento% 2 == 0)
{
midIndex = length / 2;
}
// Se o comprimento da string for ímpar
outro
{
midIndex = comprimento / 2 + 1;
}
int ponteiro1 = 0;
int pointer2 = midIndex;
while (ponteiro1{
if (str [ponteiro1] == str [ponteiro2])
{
ponteiro1 + = 1;
ponteiro2 + = 1;
}
outro
{
retorna falso;
}
}
return true;
}
// Código do driver
int main ()
{
// Caso de teste: 1
string str1 = "abab";
cout << "String 1:" << str1 << endl;
if (isSymmetrical (str1))
{
cout << "Sim, a string fornecida é simétrica" ​​<< endl;
}
outro
{
cout << "Não, a string fornecida não é simétrica" ​​<< endl;
}
// Caso de teste: 2
string str2 = "madame";
cout << "String 2:" << str2 << endl;
if (isSymmetrical (str2))
{
cout << "Sim, a string fornecida é simétrica" ​​<< endl;
}
outro
{
cout << "Não, a string fornecida não é simétrica" ​​<< endl;
}
// Caso de teste: 3
string str3 = "madma";
cout << "String 3:" << str3 << endl;
if (isSymmetrical (str3))
{
cout << "Sim, a string fornecida é simétrica" ​​<< endl;
}
outro
{
cout << "Não, a string fornecida não é simétrica" ​​<< endl;
}
// Caso de teste: 4
string str4 = "cívico";
cout << "String 4:" << str4 << endl;
if (isSymmetrical (str4))
{
cout << "Sim, a string fornecida é simétrica" ​​<< endl;
}
outro
{
cout << "Não, a string fornecida não é simétrica" ​​<< endl;
}
// Caso de teste: 5
string str5 = "khokho";
cout << "String 5:" << str5 << endl;
if (isSymmetrical (str5))
{
cout << "Sim, a string fornecida é simétrica" ​​<< endl;
}
outro
{
cout << "Não, a string fornecida não é simétrica" ​​<< endl;
}
return 0;
}

Saída:

String 1: abab
Sim, a string fornecida é simétrica
String 2: madame
Não, a string fornecida não é simétrica
String 3: madma
Sim, a string fornecida é simétrica
String 4: cívico
Não, a string fornecida não é simétrica
String 5: khokho
Sim, a string fornecida é simétrica

Relacionado: Como reverter uma string em C ++, Python e JavaScript

Programa Python para determinar se uma determinada string é simétrica ou não

Abaixo está o programa Python para determinar se uma determinada string é simétrica ou não:

# Programa Python para verificar se a string é simétrica ou não
# Função para verificar se a string é simétrica ou não
def isSymmetrical (str):
midIndex = 0
comprimento = len (str)
se comprimento% 2 == 0:
midIndex = length // 2
outro:
midIndex = length // 2 + 1
ponteiro1 = 0
ponteiro2 = midIndex
enquanto o ponteiro1if (str [ponteiro1] == str [ponteiro2]):
ponteiro1 + = 1
ponteiro2 + = 1
outro:
retorna falso
retornar verdadeiro
# Caso de teste: 1
str1 = "abab"
print ("String 1:", str1)
if (isSymmetrical (str1)):
print ("Sim, a string fornecida é simétrica")
outro:
print ("Não, a string fornecida não é simétrica")
# Caso de teste: 2
str2 = "senhora"
print ("String 2:", str2)
if (isSymmetrical (str2)):
print ("Sim, a string fornecida é simétrica")
outro:
print ("Não, a string fornecida não é simétrica")
# Caso de teste: 3
str3 = "madma"
print ("String 3:", str3)
if (isSymmetrical (str3)):
print ("Sim, a string fornecida é simétrica")
outro:
print ("Não, a string fornecida não é simétrica")
# Caso de teste: 4
str4 = "cívico"
print ("String 4:", str4)
if (isSymmetrical (str4)):
print ("Sim, a string fornecida é simétrica")
outro:
print ("Não, a string fornecida não é simétrica")
# Caso de teste: 5
str5 = "khokho"
print ("String 5:", str5)
if (isSymmetrical (str5)):
print ("Sim, a string fornecida é simétrica")
outro:
print ("Não, a string fornecida não é simétrica")

Saída:

String 1: abab
Sim, a string fornecida é simétrica
String 2: madame
Não, a string fornecida não é simétrica
String 3: madma
Sim, a string fornecida é simétrica
String 4: cívico
Não, a string fornecida não é simétrica
String 5: khokho
Sim, a string fornecida é simétrica

Relacionado: Aprendendo Python? Veja como manipular strings

Programa JavaScript para determinar se uma determinada string é simétrica ou não

Abaixo está o programa JavaScript para determinar se uma determinada string é simétrica ou não:

// Programa JavaScript para verificar se a string é simétrica ou não
// Função para verificar se a string é simétrica ou não
function isSymmetrical (str) {
var midIndex;
comprimento var = str.length;
// Se o comprimento da string for par
if (comprimento% 2 == 0) {
midIndex = Math.floor (comprimento / 2);
}
// Se o comprimento da string for ímpar
outro {
midIndex = Math.floor (comprimento / 2) + 1;
}
var ponteiro1 = 0;
var ponteiro2 = midIndex;
while (ponteiro1if (str [ponteiro1] == str [ponteiro2]) {
ponteiro1 + = 1;
ponteiro2 + = 1;
} outro {
retorna falso;
}
}
return true;
}
// Caso de teste: 1
var str1 = "abab";
document.write ("String 1:" + str1 + "
");
if (isSymmetrical (str1)) {
document.write ("Sim, a string fornecida é simétrica" ​​+ "
");
} outro {
document.write ("Não, a string fornecida não é simétrica" ​​+ "
");
}
// Caso de teste: 2
var str2 = "senhora";
document.write ("String 2:" + str2 + "
");
if (isSymmetrical (str2)) {
document.write ("Sim, a string fornecida é simétrica" ​​+ "
");
} outro {
document.write ("Não, a string fornecida não é simétrica" ​​+ "
");
}
// Caso de teste: 3
var str3 = "madma";
document.write ("String 3:" + str3 + "
");
if (isSymmetrical (str3)) {
document.write ("Sim, a string fornecida é simétrica" ​​+ "
");
} outro {
document.write ("Não, a string fornecida não é simétrica" ​​+ "
");
}
// Caso de teste: 4
var str4 = "cívico";
document.write ("String 4:" + str4 + "
");
if (isSymmetrical (str4)) {
document.write ("Sim, a string fornecida é simétrica" ​​+ "
");
} outro {
document.write ("Não, a string fornecida não é simétrica" ​​+ "
");
}
// Caso de teste: 5
var str5 = "khokho";
document.write ("String 5:" + str5 + "
");
if (isSymmetrical (str5)) {
document.write ("Sim, a string fornecida é simétrica" ​​+ "
");
} outro {
document.write ("Não, a string fornecida não é simétrica" ​​+ "
");
}

Saída:

String 1: abab
Sim, a string fornecida é simétrica
String 2: madame
Não, a string fornecida não é simétrica
String 3: madma
Sim, a string fornecida é simétrica
String 4: cívico
Não, a string fornecida não é simétrica
String 5: khokho
Sim, a string fornecida é simétrica

Relacionado: Como encontrar o caractere que ocorre com mais frequência em uma string

Resolva problemas com base em strings

Strings são um dos tópicos mais importantes para entrevistas de programação. Você deve resolver alguns dos famosos problemas de programação baseados em strings, como verificar se uma string é um palíndromo, verifique se duas strings são anagramas uma da outra, encontre o caractere que ocorre com mais frequência em uma string, inverta uma string, etc. se você deseja estar totalmente preparado.

CompartilhadoTweetE-mail
Como verificar se uma string é um palíndromo

A sua corda é um palíndromo? Quer você use Python, C ++ ou JavaScript, use um desses algoritmos para descobrir.

Leia a seguir

Tópicos relacionados
  • Programação
  • JavaScript
  • Pitão
  • Tutoriais de codificação
  • Programação C
Sobre o autor
Yuvraj Chandra (50 artigos publicados)

Yuvraj é estudante de graduação em Ciência da Computação na Universidade de Delhi, na Índia. Ele é apaixonado por Full Stack Web Development. Quando não está escrevendo, ele está explorando a profundidade de diferentes tecnologias.

Mais de Yuvraj Chandra

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever