1. Say my input is "ab". When "str.length()==0" evaluates true for the first time, "ab" is printed. The str.length is already 0, how can the recursion proceed with "char ch = str.charAt(i)"? The str seems to magically restore itself back to "ab" after each permutation gets printed. Why?

C++ for Engineers and Scientists
4th Edition
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Bronson, Gary J.
Chapter7: Arrays
Section7.5: Case Studies
Problem 3E
icon
Related questions
Question
100%

Attached is a programming problem and its Java solution.

 

My questions regarding the recursion part:

     1. Say my input is "ab". When "str.length()==0" evaluates true for the first time, "ab" is printed. The str.length is already 0, how can the recursion proceed with "char ch = str.charAt(i)"? The str seems to magically restore itself back to "ab" after each permutation gets printed. Why?

Word Scrambler
Time Limit: 0.6s
Memory Limit: 32M
Looking to find some clever anagrams, you want a helper tool that will list all possible arrangements of letters for a
given source word. To make the list easier to scan, the output should be in ascending sorted order.
Input Specification
The input will consist of one string of lower-case alphabet characters, at least 1 character long, and no more than 5.
Output Specification
The output should contain all the possible combinations of letters in the word, sorted alphabetically.
To make things easier, all of the letters in each word are guaranteed to be unique (so then every combination will also
be unique).
Note: since there are n! possibilities for combinations of n letters, you can use that fact to check that you have the right
number of possibilities in your output.
Sample Input
abc
Sample Output
abc
acb
bac
bca
cab
cba
Transcribed Image Text:Word Scrambler Time Limit: 0.6s Memory Limit: 32M Looking to find some clever anagrams, you want a helper tool that will list all possible arrangements of letters for a given source word. To make the list easier to scan, the output should be in ascending sorted order. Input Specification The input will consist of one string of lower-case alphabet characters, at least 1 character long, and no more than 5. Output Specification The output should contain all the possible combinations of letters in the word, sorted alphabetically. To make things easier, all of the letters in each word are guaranteed to be unique (so then every combination will also be unique). Note: since there are n! possibilities for combinations of n letters, you can use that fact to check that you have the right number of possibilities in your output. Sample Input abc Sample Output abc acb bac bca cab cba
import java.util.*;
import java.io.*;
public class Main
{
static void printPermutation(String str, String ans)
{
if (str.length()==e){
System.out.println(ans);
}
for (int i=0;i<str.length();i++) {
char ch = str.charAt (i);
String leftover=str.substring(0,i)+str.substring(i+1);
printPermutation(left0ver, ans: ans+ch);
}
}
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
char[] arrCh=str.toCharArray();
Arrays.sort(arrCh);
str-String.copyValueOf(arrCh);
printPermutation(str, ans: "");
}
}
Transcribed Image Text:import java.util.*; import java.io.*; public class Main { static void printPermutation(String str, String ans) { if (str.length()==e){ System.out.println(ans); } for (int i=0;i<str.length();i++) { char ch = str.charAt (i); String leftover=str.substring(0,i)+str.substring(i+1); printPermutation(left0ver, ans: ans+ch); } } public static void main(String[] args) { Scanner scan=new Scanner(System.in); String str=scan.nextLine(); char[] arrCh=str.toCharArray(); Arrays.sort(arrCh); str-String.copyValueOf(arrCh); printPermutation(str, ans: ""); } }
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Time complexity
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ for Engineers and Scientists
C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr