Нужно напечатать перестановки строки? Мы покажем вам, как это сделать на нескольких языках.
Перестановка - это расположение объектов в определенном порядке. Вы можете переставить строку длины n в n! способами.
В этой статье вы узнаете, как найти все перестановки заданной строки с помощью C ++, Python, JavaScript и C.
Как работают перестановки?
Допустим, у вас есть строка ул. со строковыми значениями «MUO». Вас попросили показать перестановки строки. Вот как бы вы это сделали:
Пример 1: Пусть str = "MUO"
Варианты «MUO»:
- «МУО»
- «МОУ»
- «УМО»
- «УОМ»
- «ОУМ»
- «ОМУ»
Обратите внимание на порядок значений. Вот еще один пример:
Пример 2: Пусть str = "AB"
Все варианты «AB»:
- «AB»
- «БА»
Вы также можете распечатать повторяющиеся перестановки, если в данной строке есть повторяющиеся символы. (Например, ABBA)
Теперь, когда вы понимаете, как работают перестановки, давайте посмотрим, как их найти, используя предпочитаемый вами язык программирования.
Примечание: Мы разработали следующие примеры кода для вывода перестановок для трех строк: 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
Печать перестановок - это просто
В этой статье вы узнали, как распечатать все перестановки строки на нескольких языках программирования. Хотя эти примеры программ - не единственный способ обработки перестановок, они являются отличным началом для тех, кто плохо знаком с их использованием в своем коде.
Воспользовавшись этими бесплатными онлайн-курсами компьютерного программирования, вы можете стать отличным программистом без степени в области компьютерных наук.
Читать далее
- Программирование
- Программирование
- Программирование на C
- JavaScript
- Python
Юврадж - студент бакалавриата по информатике в Университете Дели, Индия. Он увлечен веб-разработкой Full Stack. Когда он не пишет, он исследует глубину различных технологий.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Нажмите здесь, чтобы подписаться