Monday, 21 November 2016

https://www.hackerrank.com/contests/crescent-practice-3rd-years/challenges/permute-the-string

//Enter your code here. Read input from STDIN. Print output to STDOUT

#import <Foundation/Foundation.h>
@interface Generator : NSObject{
}
-(void)permutateString:(NSString*)str startIndex:(int)start endIndex:(int)end;
-(NSString*)swap:(NSString*)str startIndex:(int)start endIndex:(int)end;
@end
@implementation Generator {
}
 
    -(void)permutateString:(NSString*)str startIndex:(int)start endIndex:(int)end{
        int i ;
        if(start == end){
           printf("%s\n",[str UTF8String]);
         }
        else{
            for( i = start ; i<= end; i++){
               str= [self swap:str startIndex:start endIndex:i];
                [self permutateString:str startIndex:start+1 endIndex:end];
               str=  [self swap:str startIndex:start endIndex:i];
              }
        }
    }
    -(NSString*)swap:(NSString*)str startIndex:(int)start endIndex:(int)end{
        NSMutableArray *array = [NSMutableArray array];
        for (int i = 0; i < [str length]; i++) {
        NSString *temp = str;
        NSString *ch = [temp substringWithRange:NSMakeRange(i, 1)];
        [array addObject:ch];
        }
        NSString *str1  = [array objectAtIndex:start];
        NSString *str2  = [array objectAtIndex:end];
        [array replaceObjectAtIndex:start withObject:str2];
        [array replaceObjectAtIndex:end withObject:str1];
         
        return [array componentsJoinedByString:@""];
 }
@end  

int main(){
    char str[] = "";
    scanf("%s",str);
    NSString *finalStr = [NSString stringWithFormat:@"%s",str];
    int length = [finalStr length]-1 ;
    Generator *obj = [[Generator alloc]init];
    [obj permutateString:finalStr startIndex:0 endIndex:length];
    return 0;
}

No comments:

Post a Comment