Sort characters in NSString into alphabetical order

前端 未结 4 1115
醉话见心
醉话见心 2020-12-10 15:57

I\'m trying to re-arrange words into alphabetical order. For example, tomato would become amoott, or stack would become ackst.

I\'ve found some methods to do this in

4条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-10 16:45

    Just another example using NSMutableString and sortUsingComparator:

    NSMutableString *mutableString = [[NSMutableString alloc] initWithString:@"tomat"];
    [mutableString appendString:@"o"];
    NSLog(@"Orignal string: %@", mutableString);
    
    NSMutableArray *charArray = [NSMutableArray array];
    for (int i = 0; i < mutableString.length; ++i) {
        [charArray addObject:[NSNumber numberWithChar:[mutableString characterAtIndex:i]]];
    }
    
    [charArray sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        if ([obj1 charValue] < [obj2 charValue]) return NSOrderedAscending;
        return NSOrderedDescending;
    }];
    
    [mutableString setString:@""];
    for (int i = 0; i < charArray.count; ++i) {
        [mutableString appendFormat:@"%c", [charArray[i] charValue]];
    }
    
    NSLog(@"Sorted string: %@", mutableString);
    

    Output:

    Orignal string: tomato
    Sorted string: amoott
    

提交回复
热议问题