I need a review of the following code for finding all permutations of a string in C++:
List Permute(const String& string)
{
if (string.length == 0)
return EmptyStrings(1);
List prevList = Permute(SubString(string,1,string.length));
List nextList = EmptyStrings(string.length*prevList.length);
for (int i=0; i<prevList.length; i++)
{
for (int j=0; j<string.length; j++)
{
nextList[i*string.length+j] += SubString(prevList[i],0,j);
nextList[i*string.length+j] += string[0];
nextList[i*string.length+j] += SubString(prevList[i],j,string.length-1);
}
}
return nextList;
}
You may assume the correctness of the following:
class List
class String
List EmptyStrings(int n); // returns a list of 'n' empty strings
String SubString(const String& string,int i,int j); // returns the string 'string[i...j)'