Автор Юврадж Чандра
Делиться
Электронное письмо

Сравнение двух текстовых строк, являющихся анаграммами, - отличная задача для решения проблем для улучшения навыков программирования.

Анаграмма - это строка, образованная перестановкой букв другой строки. Проверка того, являются ли две струны анаграммами друг друга, может показаться трудным, но это лишь немного сложно и обманчиво просто. В этой статье вы узнаете, как проверить, являются ли две строки анаграммами друг друга, используя C ++, Python и JavaScript.

Постановка задачи

Вам даны две строки s1 и s2, вам нужно проверить, являются ли эти две строки анаграммами друг друга или нет.

Пример 1: Пусть s1 = "creative" и s2 = "reactive".

Поскольку вторая строка может быть сформирована перестановкой букв первой строки и наоборот, две строки являются анаграммами друг друга.

Пример 2: Пусть s1 = «Питер Пайпер выбрал кусок маринованного перца» и s2 = «Кусок маринованного перца, который сорвал Питер Пайпер».

instagram viewer

Поскольку вторая строка не может быть сформирована перестановкой букв первой строки и наоборот, две строки не являются анаграммами друг друга.

Процесс проверки, являются ли две строки анаграммами друг друга

Вы можете следовать приведенному ниже подходу, чтобы проверить, являются ли две строки анаграммами друг друга:

  1. Сравните длину обеих струн.
  2. Если длина обеих строк не одинакова, это означает, что они не могут быть анаграммами друг друга. Таким образом, верните false.
  3. Если длина обеих струн одинакова, продолжайте дальше.
  4. Отсортируйте обе строки.
  5. Сравните обе отсортированные строки.
  6. Если обе отсортированные строки одинаковы, это означает, что они являются анаграммами друг друга. Таким образом, верните истину.
  7. Если обе отсортированные строки различны, это означает, что они не анаграммы друг друга. Таким образом, верните false.

Связанный: Как проверить, является ли строка палиндромом

Программа на C ++ для проверки, являются ли две строки анаграммами друг друга

Ниже приведена программа на C ++, которая проверяет, являются ли две строки анаграммами друг друга или нет:

#включают 
используя пространство имен std;
bool checkAnagrams (строка s1, строка s2)
{
int size1 = s1.length ();
int size2 = s2.length ();
// Если длина обеих строк не одинакова,
// это означает, что они не могут быть анаграммами друг друга.
// Таким образом, вернем false.
если (размер1! = размер2)
{
вернуть ложь;
}
сортировка (s1.begin (), s1.end ());
сортировка (s2.begin (), s2.end ());
для (int i = 0; я {
если (s1 [i]! = s2 [i])
{
вернуть ложь;
}
}
вернуть истину;
}
int main ()
{
строка s1 = "слушать";
строка s2 = "тихо";
cout << "Строка 1:" << s1 << endl;
cout << "Строка 2:" << s2 << endl;
если (checkAnagrams (s1, s2))
{
cout << "Да, две строки являются анаграммами друг друга" << endl;
}
еще
{
cout << "Нет, две строки не являются анаграммами друг друга" << endl;
}
string s3 = "Добро пожаловать в MUO";
строка s4 = «MUO, чтобы приветствовать»;
cout << "Строка 3:" << s3 << endl;
cout << "Строка 4:" << s4 << endl;
если (checkAnagrams (s3, s4))
{
cout << "Да, две строки являются анаграммами друг друга" << endl;
}
еще
{
cout << "Нет, две строки не являются анаграммами друг друга" << endl;
}
string s5 = "Питер Пайпер сорвал кусочек маринованного перца";
string s6 = "Кусок маринованного перца, который сорвал Питер Пайпер";
cout << "Строка 5:" << s5 << endl;
cout << "Строка 6:" << s6 << endl;
если (checkAnagrams (s5, s6))
{
cout << "Да, две строки являются анаграммами друг друга" << endl;
}
еще
{
cout << "Нет, две строки не являются анаграммами друг друга" << endl;
}
string s7 = "Она продает ракушки на берегу моря";
строка s8 = "ракушки на берегу моря";
cout << "Строка 7:" << s7 << endl;
cout << "Строка 8:" << s8 << endl;
если (checkAnagrams (s7, s8))
{
cout << "Да, две строки являются анаграммами друг друга" << endl;
}
еще
{
cout << "Нет, две строки не являются анаграммами друг друга" << endl;
}
строка s9 = "креатив";
строка s10 = "реактивный";
cout << "Строка 9:" << s9 << endl;
cout << "Строка 10:" << s10 << endl;
если (checkAnagrams (s9, s10))
{
cout << "Да, две строки являются анаграммами друг друга" << endl;
}
еще
{
cout << "Нет, две строки не являются анаграммами друг друга" << endl;
}
возврат 0;
}

Выход:

Строка 1: слушать
Строка 2: беззвучно
Да, две струны являются анаграммами друг друга
Строка 3: Добро пожаловать в MUO
Строка 4: MUO to Welcome
Да, две струны являются анаграммами друг друга
Строка 5: Питер Пайпер сорвал кусочек маринованного перца.
Строка 6: кусочек маринованного перца, который сорвал Питер Пайпер.
Нет, две струны не являются анаграммами друг друга
Строка 7: Она продает ракушки на берегу моря.
Строка 8: ракушки на берегу моря
Нет, две струны не являются анаграммами друг друга
Строка 9: креатив
Строка 10: реактивная
Да, две струны являются анаграммами друг друга

Связанный: Как подсчитать количество вхождений данного символа в строку

Программа Python для проверки, являются ли две строки анаграммами друг друга

Ниже приведена программа Python, которая проверяет, являются ли две строки анаграммами друг друга или нет:

def checkAnagrams (s1, s2):
size1 = len (s1)
size2 = len (s2)
# Если длина обеих строк не одинакова,
# это означает, что они не могут быть анаграммами друг друга.
# Таким образом, возвращаем false.
если size1! = size2:
возврат 0
s1 = отсортировано (s1)
s2 = отсортировано (s2)
для я в диапазоне (0, размер1):
если s1 [i]! = s2 [i]:
вернуть ложь
вернуть True
s1 = "слушать"
s2 = "тихий"
print ("Строка 1:", s1)
print ("Строка 2:", s2)
если (checkAnagrams (s1, s2)):
print («Да, две строки являются анаграммами друг друга»)
еще:
print ("Нет, две строки не являются анаграммами друг друга")
s3 = "Добро пожаловать в MUO"
s4 = "MUO приветствовать"
print ("Строка 3:", s3)
print ("Строка 4:", s4)
если (checkAnagrams (s3, s4)):
print («Да, две строки являются анаграммами друг друга»)
еще:
print ("Нет, две строки не являются анаграммами друг друга")
s5 = "Питер Пайпер сорвал кусочек маринованного перца"
s6 = "Кусок маринованного перца, который сорвал Питер Пайпер"
print ("Строка 5:", s5)
print ("Строка 6:", s6)
если (checkAnagrams (s5, s6)):
print («Да, две строки являются анаграммами друг друга»)
еще:
print ("Нет, две строки не являются анаграммами друг друга")
s7 = "Она продает ракушки на берегу моря"
s8 = "ракушки на берегу моря"
print ("Строка 7:", s7)
print ("Строка 8:", s8)
если (checkAnagrams (s7, s8)):
print («Да, две строки являются анаграммами друг друга»)
еще:
print ("Нет, две строки не являются анаграммами друг друга")
s9 = "креатив"
s10 = "реактивный"
print ("Строка 9:", s9)
print ("Строка 10:", s10)
если (checkAnagrams (s9, s10)):
print («Да, две строки являются анаграммами друг друга»)
еще:
print ("Нет, две строки не являются анаграммами друг друга")

Выход:

Строка 1: слушать
Строка 2: беззвучно
Да, две струны являются анаграммами друг друга
Строка 3: Добро пожаловать в MUO
Строка 4: MUO to Welcome
Да, две струны являются анаграммами друг друга
Строка 5: Питер Пайпер сорвал кусочек маринованного перца.
Строка 6: кусочек маринованного перца, который сорвал Питер Пайпер.
Нет, две струны не являются анаграммами друг друга
Строка 7: Она продает ракушки на берегу моря.
Строка 8: ракушки на берегу моря
Нет, две струны не являются анаграммами друг друга
Строка 9: креатив
Строка 10: реактивная
Да, две струны являются анаграммами друг друга

Связанный: Как найти в строке гласные, согласные, цифры и специальные символы

Проверьте, являются ли две строки анаграммами друг друга в JavaScript

Ниже приведена программа JavaScript, которая проверяет, являются ли две строки анаграммами друг друга или нет:

function checkAnagrams (s1, s2) {
пусть size1 = s1.length;
пусть size2 = s2.length;
// Если длина обеих строк не одинакова,
// это означает, что они не могут быть анаграммами друг друга.
// Таким образом, вернем false.
если (размер1! = размер2)
{
вернуть ложь;
}
s1.sort ();
s2.sort ();
для (пусть i = 0; я {
если (s1 [i]! = s2 [i])
{
вернуть ложь;
}
}
вернуть истину;
}
var s1 = "слушать";
var s2 = "тихий";
document.write ("Строка 1:" + s1 + "
");
document.write ("Строка 2:" + s2 + "
");
if (checkAnagrams (s1.split (""), s2.split (""))) {
document.write ("Да, две строки являются анаграммами друг друга" + "
");
} еще {
document.write ("Нет, две строки не являются анаграммами друг друга" + "
");
}
var s3 = "Добро пожаловать в MUO";
var s4 = "MUO приветствовать";
document.write ("Строка 3:" + s3 + "
");
document.write ("Строка 4:" + s4 + "
");
if (checkAnagrams (s3.split (""), s4.split (""))) {
document.write ("Да, две строки являются анаграммами друг друга" + "
");
} еще {
document.write ("Нет, две строки не являются анаграммами друг друга" + "
");
}
var s5 = "Питер Пайпер сорвал кусочек маринованного перца";
var s6 = "Кусок маринованного перца, который сорвал Питер Пайпер";
document.write ("Строка 5:" + s5 + "
");
document.write ("Строка 6:" + s6 + "
");
if (checkAnagrams (s5.split (""), s6.split (""))) {
document.write ("Да, две строки являются анаграммами друг друга" + "
");
} еще {
document.write ("Нет, две строки не являются анаграммами друг друга" + "
");
}
var s7 = "Она продает ракушки на берегу моря";
var s8 = "ракушки на берегу моря";
document.write ("Строка 7:" + s7 + "
");
document.write ("Строка 8:" + s8 + "
");
if (checkAnagrams (s7.split (""), s8.split (""))) {
document.write ("Да, две строки являются анаграммами друг друга" + "
");
} еще {
document.write ("Нет, две строки не являются анаграммами друг друга" + "
");
}
var s9 = "креатив";
var s10 = "реактивный";
document.write ("Строка 9:" + s9 + "
");
document.write ("Строка 10:" + s10 + "
");
if (checkAnagrams (s9.split (""), s10.split (""))) {
document.write ("Да, две строки являются анаграммами друг друга" + "
");
} еще {
document.write ("Нет, две строки не являются анаграммами друг друга" + "
");
}

Выход:

Строка 1: слушать
Строка 2: беззвучно
Да, две струны являются анаграммами друг друга
Строка 3: Добро пожаловать в MUO
Строка 4: MUO to Welcome
Да, две струны являются анаграммами друг друга
Строка 5: Питер Пайпер сорвал кусочек маринованного перца.
Строка 6: кусочек маринованного перца, который сорвал Питер Пайпер.
Нет, две струны не являются анаграммами друг друга
Строка 7: Она продает ракушки на берегу моря.
Строка 8: ракушки на берегу моря
Нет, две струны не являются анаграммами друг друга
Строка 9: креатив
Строка 10: реактивная
Да, две струны являются анаграммами друг друга

Связанный: Как узнать значение ASCII символа?

Используйте правильные ресурсы, чтобы научиться программировать

Если вы хотите закрепить свои навыки программирования, важно изучить новые концепции и потратить время на их использование. Один из способов сделать это - использовать приложения для программирования, которые помогут вам изучить различные концепции программирования, одновременно получая удовольствие.

Делиться
Электронное письмо
8 приложений, которые помогут вам научиться программировать к Международному дню программиста

Хотите освежить свои навыки программирования? Эти приложения и веб-сайты помогут вам изучать программирование в удобном для вас темпе.

Читать далее

Похожие темы
  • Программирование
  • JavaScript
  • Python
  • Программирование на C
Об авторе
Юврадж Чандра (Опубликовано 43 статей)

Юврадж - студент бакалавриата по информатике в Университете Дели, Индия. Он увлечен веб-разработкой Full Stack. Когда он не пишет, он исследует глубину различных технологий.

Ещё от Yuvraj Chandra

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться