Автор: Юврадж Чандра
ДелитьсяТвитнутьЭл. адрес

Нужно напечатать перестановки строки? Мы покажем вам, как это сделать на нескольких языках.

Перестановка - это расположение объектов в определенном порядке. Вы можете переставить строку длины n в n! способами.

В этой статье вы узнаете, как найти все перестановки заданной строки с помощью C ++, Python, JavaScript и C.

Как работают перестановки?

Допустим, у вас есть строка ул. со строковыми значениями «MUO». Вас попросили показать перестановки строки. Вот как бы вы это сделали:

Пример 1: Пусть str = "MUO"

Варианты «MUO»:

  • «МУО»
  • «МОУ»
  • «УМО»
  • «УОМ»
  • «ОУМ»
  • «ОМУ»

Обратите внимание на порядок значений. Вот еще один пример:

Пример 2: Пусть str = "AB"

Все варианты «AB»:

  • «AB»
  • «БА»

Вы также можете распечатать повторяющиеся перестановки, если в данной строке есть повторяющиеся символы. (Например, ABBA)

Теперь, когда вы понимаете, как работают перестановки, давайте посмотрим, как их найти, используя предпочитаемый вами язык программирования.

instagram viewer

Примечание: Мы разработали следующие примеры кода для вывода перестановок для трех строк: MUO, AB и XYZ. Если вы хотите использовать какой-либо из этого кода, скопируйте его и измените эти строки, чтобы они соответствовали вашему проекту.

Связанный: Как преобразовать символы строки в противоположный регистр с помощью программирования

Программа C ++ для печати всех перестановок строки

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

// Программа на C ++ для печати всех
// перестановки строки
#включают
используя пространство имен std;
// Функция для печати перестановок строки
void findPermutations (строка str, int leftIndex, int rightIndex)
{
если (leftIndex == rightIndex)
{
cout << str << endl;
}
еще
{
для (int i = leftIndex; я <= rightIndex; я ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Код драйвера
int main ()
{
строка str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Перестановки" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
строка str2 = "AB";
int size2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Перестановки" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
строка str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Перестановки" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
возврат 0;
}

Выход:

str1: MUO
Перестановки MUO:
MUO
Меморандум
UMO
UOM
ОУМ
ОМУ
str2: AB
Перестановки AB:
AB
BA
str3: XYZ
Перестановки XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

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

Программа Python для печати всех перестановок строки

Далее идет код Python для печати всех перестановок строки:

# Программа Python для печати всех
# перестановка строки
def convertToString (Список):
return '' .join (Список)
# Функция для печати перестановок строки
def findPermutations (s, leftIndex, rightIndex):
если leftIndex == rightIndex:
печать (convertToString (s))
еще:
для i в диапазоне (leftIndex, rightIndex + 1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex + 1, rightIndex)
# возврат
s [leftIndex], s [i] = s [i], s [leftIndex]
# Код драйвера
str1 = "MUO"
size1 = len (str1)
s1 = список (str1)
print ("str1:", str1)
print ("Перестановки", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
size2 = len (str2)
s2 = список (str2)
print ("str2:", str2)
print ("Перестановки", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = список (str3)
print ("str3:", str3)
print ("Перестановки", str3, ":")
findPermutations (s3, 0, size3-1)

Выход:

str1: MUO
Перестановки MUO:
MUO
Меморандум
UMO
UOM
ОУМ
ОМУ
str2: AB
Перестановки AB:
AB
BA
str3: XYZ
Перестановки XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

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

Программа JavaScript для печати всех перестановок строки

Вот как вы печатаете перестановки в JavaScript:

// Программа JavaScript для печати всего
// перестановки строки
// Функция для замены символов строки
функция swap (str, leftIndex, i) {
пусть темп;
пусть tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
возврат (tempArray) .join ("");
}
// Функция для печати перестановок строки
function findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} еще {
для (пусть я = leftIndex; я <= rightIndex; i ++) {
str = своп (str, leftIndex, i);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Код драйвера
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Перестановки" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Перестановки" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Перестановки" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Выход:

str1: MUO
Перестановки MUO:
MUO
Меморандум
UMO
UOM
ОУМ
ОМУ
str2: AB
Перестановки AB:
AB
BA
str3: XYZ
Перестановки XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Связанный: Как пройти испытание FizzBuzz на 5 языках программирования

Программа на C для печати всех перестановок строки

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

// Программа C для печати всех
// перестановки строки
#включают
#включают
// Функция для замены символов строки
недействительный своп (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
стр [leftIndex] = стр [я];
str [i] = temp;
}
// Функция для печати перестановок строки
void findPermutations (char str [], int leftIndex, int rightIndex)
{
если (leftIndex == rightIndex)
{
printf ("% s \ ⁠n", str);
}
еще
{
для (int i = leftIndex; я <= rightIndex; я ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Код драйвера
int main ()
{
char str1 [] = "MUO";
int size1 = strlen (str1);
printf ("str1:% s \ ⁠n", str1);
printf ("Перестановки% s: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int size2 = strlen (str2);
printf ("str2:% s \ ⁠n", str2);
printf ("Перестановки% s: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int size3 = strlen (str3);
printf ("str3:% s \ ⁠n", str3);
printf ("Перестановки% s: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
возврат 0;
}

Выход:

str1: MUO
Перестановки MUO:
MUO
Меморандум
UMO
UOM
ОУМ
ОМУ
str2: AB
Перестановки AB:
AB
BA
str3: XYZ
Перестановки XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Печать перестановок - это просто

В этой статье вы узнали, как распечатать все перестановки строки на нескольких языках программирования. Хотя эти примеры программ - не единственный способ обработки перестановок, они являются отличным началом для тех, кто плохо знаком с их использованием в своем коде.

ДелитьсяТвитнутьЭл. адрес
11 лучших сайтов для бесплатных онлайн-курсов по компьютерному программированию

Воспользовавшись этими бесплатными онлайн-курсами компьютерного программирования, вы можете стать отличным программистом без степени в области компьютерных наук.

Читать далее

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

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

Ещё от Yuvraj Chandra

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

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

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