Как проверить симметричность строки при программировании
Струна называется симметричной, если обе половины струны одинаковы. В этой статье вы узнаете алгоритм, позволяющий определить, является ли данная строка симметричной или нет. Вы также узнаете, как реализовать этот алгоритм на самых популярных языках программирования, таких как C ++, Python, C и JavaScript.
Постановка задачи
Вам дана строка. Вам необходимо определить, является ли данная струна симметричной или нет.
Пример 1. Пусть str = "abab".
Это симметрично, так как обе половинки струны одинаковые.
Таким образом, вывод будет «Да, данная строка симметрична».
Пример 2 : Пусть str = "madam".
Если длина строки нечетная, средний символ строки игнорируется. Следовательно, 1-я половина = «ma», а 2-я половина = «am». Две половинки не совпадают.
Таким образом, вывод будет «Нет, данная строка не симметрична».
Пример 3 : Пусть str = "madma".
1-я половина = «ма» и 2-я половина = «ма». Обе половинки струны одинаковые.
Таким образом, вывод будет «Да, данная строка симметрична».
Алгоритм определения того, является ли данная строка симметричной или нет
Вы можете определить, является ли данная строка симметричной или нет, следуя приведенному ниже подходу:
- Найдите длину строки.
- Найдите средний индекс строки.
- Если длина строки четная, midIndex = length / 2 .
- Если длина строки нечетная, midIndex = (length / 2) + 1 . В этом случае средний символ строки игнорируется для сравнения.
- Инициализируйте две переменные-указатели pointer1 и pointer2 . Указатель1 сохранит индекс первого символа (0) строки, а указатель2 сохранит индекс среднего символа (midIndex) строки.
- Теперь сравните соответствующие символы обеих половинах строки с использованием цикла. Запуск время цикла до pointer1 <midIndex и pointer2 <lengthOfString.
- Сравните соответствующие символы по индексам pointer1 и pointer2 .
- Если какой-либо соответствующий символ окажется несходным, верните false . И если не найдено соответствующих символов, отличающихся друг от друга, верните true .
- Кроме того, не забудьте увеличить значение pointer1 и pointer2 на каждой итерации.
Программа на C ++ для определения, является ли данная строка симметричной или нет
Ниже приведена программа на C ++, которая определяет, является ли данная строка симметричной или нет:
// 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;
}
Выход:
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
Программа Python для определения, является ли данная строка симметричной или нет
Ниже приведена программа Python для определения, является ли данная строка симметричной или нет:
# 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")
Выход:
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
Программа на JavaScript для определения, является ли данная строка симметричной или нет
Ниже приведена программа на JavaScript, чтобы определить, является ли данная строка симметричной или нет:
// 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>");
}
Выход:
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
Решать задачи на основе строк
Строки – одна из самых важных тем для собеседований по программированию. Вы должны решить некоторые из известных проблем программирования на основе строк, например, проверить, является ли строка палиндромом, проверить, являются ли две строки анаграммами друг друга, найти наиболее часто встречающийся символ в строке, перевернуть строку и т. Д., Если вы ' мы надеемся быть полностью подготовленными.