מאת יובראג 'צ'נדרה
לַחֲלוֹקצִיוּץאימייל

צריך להדפיס את התמורות של מחרוזת? אנו נראה לך כיצד במספר שפות.

תמורה היא סידור של אובייקטים בסדר מסוים. אתה יכול להחליף מחרוזת באורך n ב- n! דרכים.

במאמר זה תלמד כיצד למצוא את כל התמורות של מחרוזת נתונה באמצעות C ++, Python, JavaScript ו- C.

כיצד פועלים הפרמוטציות?

נניח שיש לך מחרוזת str עם "MUO" כערכי המחרוזת. התבקשת להציג את תמורות המחרוזת. כך תוכל לנהוג:

דוגמא 1: תן str = "MUO"

התמורות של "MUO" הן:

  • "MUO"
  • "MOU"
  • "UMO"
  • "UOM"
  • "OUM"
  • "OMU"

שימו לב לסדר הערכים. הנה דוגמא נוספת:

דוגמא 2: תן str = "AB"

כל התמורות של "AB" הן:

  • "AB"
  • "תוֹאַר רִאשׁוֹן"

תוכל גם להדפיס תמורות כפולות אם יש תווים חוזרים במחרוזת הנתונה. (ABBA, למשל)

כעת, לאחר שאתה מבין כיצד פועלים תמורות, בואו נסתכל כיצד תוכלו למצוא אותם באמצעות שפת התכנות המועדפת עליכם.

הערה: עיצבנו את דוגמאות הקוד הבאות לפלט תמורות לשלוש מחרוזות: MUO, AB ו- XYZ. אם ברצונך להשתמש בקוד זה, העתק אותו ושנה את המחרוזות כך שיתאימו לפרויקט שלך.

קָשׁוּר: כיצד להמיר דמויות של מחרוזת למקרה ההפוך באמצעות תכנות

instagram viewer

תוכנית C ++ להדפסת כל ההתרעות של מחרוזת

להלן תוכנית C ++ להדפסת כל התמורות של מחרוזת:

// תוכנית C ++ להדפסת הכל
// תמורות של מחרוזת
#לִכלוֹל
באמצעות מרחב שמות std;
// פונקציה להדפסת תמורות של מחרוזת
void findPermutations (string string, int leftIndex, int rightIndex)
{
אם (leftIndex == rightIndex)
{
cout << str << endl;
}
אַחֵר
{
עבור (int i = leftIndex; i <= rightIndex; אני ++)
{
החלף (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
החלף (str [leftIndex], str [i]);
}
}
}
// קוד נהג
int main ()
{
string str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "הרשאות של" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
string str2 = "AB";
int size2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "הרשאות של" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
string str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "הרשאות של" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
החזר 0;
}

תְפוּקָה:

str1: MUO
הרשאות של MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
הרשאות AB:
AB
תוֹאַר רִאשׁוֹן
str3: XYZ
הרשאות של XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

קָשׁוּר: כיצד לבדוק אם מחרוזת סימטרית לתכנות

תוכנית פייתון להדפסת כל ההתרעות של מחרוזת

לאחר מכן, קוד Python להדפסת כל התמורות של מחרוזת:

תוכנית פייתון להדפסת הכל
# תמורות של מחרוזת
def convertToString (רשימה):
חזור ''. להצטרף (רשימה)
# פונקציה להדפסת תמורות של מחרוזת
def findPermutations (s, leftIndex, rightIndex):
אם leftIndex == rightIndex:
print (convertToString (ים))
אַחֵר:
עבור 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"
גודל 1 = len (str1)
s1 = list (str1)
print ("str1:", str1)
print ("Permutations of", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
גודל 2 = len (str2)
s2 = list (str2)
print ("str2:", str2)
print ("Permutations of", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = list (str3)
print ("str3:", str3)
print ("Permutations of", str3, ":")
findPermutations (s3, 0, size3-1)

תְפוּקָה:

str1: MUO
הרשאות של MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
הרשאות AB:
AB
תוֹאַר רִאשׁוֹן
str3: XYZ
הרשאות של XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

קָשׁוּר: כיצד לבדוק האם שתי מחרוזות הן אנאגרמות זו של זו

תוכנית JavaScript להדפסת כל ההתרעות של מחרוזת

כך תדפיס תמורות ב- JavaScript:

// תוכנית JavaScript להדפסת הכל
// תמורות של מחרוזת
// פונקציה להחלפת תווים של המחרוזת
החלפת פונקציות (str, leftIndex, i) {
תנו לטמפ ';
תן tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray) .join ("");
}
// פונקציה להדפסת תמורות של מחרוזת
function findPermutations (str, leftIndex, rightIndex) {
אם (leftIndex == rightIndex) {
document.write (str + "
");
} אחר {
עבור (let i = leftIndex; i <= rightIndex; i ++) {
str = swap (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
MOU
UMO
UOM
OUM
OMU
str2: AB
הרשאות AB:
AB
תוֹאַר רִאשׁוֹן
str3: XYZ
הרשאות של XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

קָשׁוּר: כיצד להשלים את אתגר FizzBuzz ב -5 שפות תכנות

תוכנית C להדפסת כל ההתרעות של מחרוזת

להלן תוכנית C שמדפיסה את כל התמורות של מחרוזת:

// תוכנית C להדפסת הכל
// תמורות של מחרוזת
#לִכלוֹל
#לִכלוֹל
// פונקציה להחלפת תווים של המחרוזת
החלפת חלל (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = זמני;
}
// פונקציה להדפסת תמורות של מחרוזת
void findPermutations (char str [], int leftIndex, int rightIndex)
{
אם (leftIndex == rightIndex)
{
printf ("%s \ ⁠n", str);
}
אַחֵר
{
עבור (int i = leftIndex; i <= rightIndex; אני ++)
{
החלף (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
החלף (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
MOU
UMO
UOM
OUM
OMU
str2: AB
הרשאות AB:
AB
תוֹאַר רִאשׁוֹן
str3: XYZ
הרשאות של XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

הדפסה של הרשאות היא קלה

במאמר זה למדת כיצד להדפיס את כל התמורות של מחרוזת במספר שפות תכנות. למרות שתוכניות מדגם אלה אינן הדרך היחידה להתמודד עם תמורות, הן מהוות התחלה מצוינת עבור אלה שהתחילו להשתמש בהן בקוד שלהן.

לַחֲלוֹקצִיוּץאימייל
11 האתרים הטובים ביותר לקורסי תכנות מחשבים מקוונים בחינם

באמצעות קורסי תוכנת מחשב מקוונים בחינם, אתה יכול להפוך לקודד נהדר ללא תואר במדעי המחשב.

קרא הבא

נושאים קשורים
  • תִכנוּת
  • תִכנוּת
  • C תכנות
  • JavaScript
  • פִּיתוֹן
על הסופר
יובראג 'צ'נדרה (58 מאמרים פורסמו)

יובראג 'הוא סטודנט לתואר ראשון במדעי המחשב באוניברסיטת דלהי, הודו. הוא נלהב מ- Full Stack Web Development. כשהוא לא כותב, הוא בוחן את עומק הטכנולוגיות השונות.

עוד מאת Yuvraj Chandra

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה