文字列「This Is Demo」のすべての順列を単語ごとに出力しようとしています。たとえば、有効な順列は「This Demo Is」、「Demo Is This」、「Demo This is」です。私のプログラムはすべての順列を印刷していません。コードの何が問題になっていますか?
+(void)printPermutations
{
NSString *str = @"This Is Demo";
NSArray *arr = [str componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableArray *permutationInput = [arr mutableCopy];
[[self class] printPermutationOfString:permutationInput startIndex:0 endIndex:arr.count-1];
}
+(void)printPermutationOfString:(NSMutableArray*)arr startIndex:(int)startingindex
endIndex:(int)endIndex
{
if (startingindex == endIndex) {
NSLog(@"%@",arr);
return;
}
for (int i = startingindex; i < endIndex; i++) {
[arr exchangeObjectAtIndex:startingindex withObjectAtIndex:i];
[[self class] printPermutationOfString:arr startIndex:i+1 endIndex:endIndex];
[arr exchangeObjectAtIndex:startingindex withObjectAtIndex:endIndex];
}
}