ALGORITHM:
The permutation of a string is the rearrangement of the string in different orders to form different strings of the same length. A string of length n can have n! permutations.
Source: Mathworld
We will start with each letter of the string and then we found all the possible combinations for the string beginning
with that letter. And once we picked a letter in the 2nd position, we
then found all the possible combinations that begin with that 2 letter
sequence before we changed any of the letters in the first 2 positions.
So, basically what we did was choose a letter and then peformed the
permutation process starting at the next position to the right before we
come back and change the character on the left.
CODE:
import java.util.Scanner;
public class permutations{
static char[] swap(char[] a,int i,int j){
char tmp =a[i];
a[i]=a[j];
a[j]=tmp;
return a;
}
static void printArray(char[] a){
for (int i=0;i<a.length;i++)
System.out.print(a[i]);
System.out.println();
}
static void permute(char[] a,int index){
if(index==a.length){
printArray(a);
return;
}
for(int i=index;i<a.length;i++){
a=swap(a,i,index);
permute(a,index+1);
a=swap(a,i,index);
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter the string: ");
permute(in.next().toCharArray(),0);
}
}
public class permutations{
static char[] swap(char[] a,int i,int j){
char tmp =a[i];
a[i]=a[j];
a[j]=tmp;
return a;
}
static void printArray(char[] a){
for (int i=0;i<a.length;i++)
System.out.print(a[i]);
System.out.println();
}
static void permute(char[] a,int index){
if(index==a.length){
printArray(a);
return;
}
for(int i=index;i<a.length;i++){
a=swap(a,i,index);
permute(a,index+1);
a=swap(a,i,index);
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter the string: ");
permute(in.next().toCharArray(),0);
}
}
OUTPUT:
Enter the string: abc
abc
acb
bac
bca
cba
cab
abc
acb
bac
bca
cba
cab
0 comments :
Post a Comment