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?

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
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
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education