Interviewer may start with a very basic question as to what is number of permutations of a string with n characters. In case repetition is not allowed then it would be n! i.e [n*(n-1)*(n-2*....*!)] . if repetition is allowed it would be n^n i.e [n*n*...n times].
Next would be to code it actually. Generally language is not a concern. What interviewer looks is how candidate thinks(his solving ability) and whether he is able to complete error free and working code. Following is a Java code that will print permutations of a given String along with the number of permutations possible.
Example :
More better example where you don't have to swap again to restore string is provided in the Interview questions git repo -
Next would be to code it actually. Generally language is not a concern. What interviewer looks is how candidate thinks(his solving ability) and whether he is able to complete error free and working code. Following is a Java code that will print permutations of a given String along with the number of permutations possible.
Example :
Code :
/**
* Created with IntelliJ IDEA.
* User: aniket
* Date: 11/19/13
* Time: 3:16 PM
*/
public class PermutationsPrinter {
private int noOfPermutation;
public void permute(char[] line,int start, int end){
int j;
if(start == end){
noOfPermutation++;
System.out.println(line);
}
else {
for(j=start;j<=end;j++){
char[] newLine = getSwappedString(line, start, j);
permute(newLine,start+1,end);
}
}
}
private char[] getSwappedString(char[] characters,int i,int j ){
String newLine = String.valueOf(swap(characters,i,j));//Create New String
swap(characters,i,j);//restore original String
return newLine.toCharArray();
}
private char[] swap(char[] characters,int i,int j){
char temp = characters[i];
characters[i] = characters[j];
characters[j] = temp;
return characters;
}
public int getNoOfPermutation() {
return noOfPermutation;
}
public static void main(String args[]){
String line = "ABC";
PermutationsPrinter permuter = new PermutationsPrinter();
permuter.permute(line.toCharArray(), 0, line.length() - 1);
System.out.println("Number Of Permutations made : " + permuter.getNoOfPermutation());
}
}
Output :
ABC
ACB
BAC
BCA
CBA
CAB
Number Of Permutations made : 6
(3! = 6 as expected)
More better example where you don't have to swap again to restore string is provided in the Interview questions git repo -