Sha256: 9a0544b8ce7f6bb781bf3d6b8b19aa8d3ea619358b0b1e8dc26c4fe7904ad674

Contents?: true

Size: 1.58 KB

Versions: 366

Compression:

Stored size: 1.58 KB

Contents

#import "TransposeExample.h"

@implementation Transpose

+ (NSArray<NSString *> *)transpose:(NSArray<NSString *> *)input {
    int maxLength = 0;
    
    for (NSString *line in input) {
        if (line.length > maxLength) {
            maxLength = (int)line.length;
        }
    }
    
    NSMutableArray<NSString *> *result = [NSMutableArray arrayWithCapacity:maxLength];
    
    for (int i = 0; i < maxLength; i++) {
        [result addObject:@""];
        
        for (NSString *line in input) {
            NSString *character;
            
            if (i < line.length) {
                character = [line substringWithRange:NSMakeRange(i, 1)];
            } else {
                character = @" ";
            }
            
            result[i] = [result[i] stringByAppendingString:character];
        }
    }
    
    NSMutableArray<NSString *> *trimmedResult = [[NSMutableArray alloc] init];
    
    for (NSString *line in result) {
        [trimmedResult addObject:[self stringByTrimmingTrailingWhiteSpace:line]];
    }
    
    return trimmedResult;
}

+ (NSString *)stringByTrimmingTrailingWhiteSpace:(NSString *)string {
    NSUInteger location = 0;
    NSUInteger length = [string length];
    unichar charBuffer[length];
    [string getCharacters:charBuffer];
    
    NSCharacterSet *characterSet = [NSCharacterSet whitespaceCharacterSet];
    
    while (length > 0) {
        if (![characterSet characterIsMember:charBuffer[length - 1]]) {
            break;
        }
        length--;
    }
    
    return [string substringWithRange:NSMakeRange(location, length - location)];
}

@end

Version data entries

366 entries across 366 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.179 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.178 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.177 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.176 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.175 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.174 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.173 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.172 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.171 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.170 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.169 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.167 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.166 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.165 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.164 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.163 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.162 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.161 tracks/objective-c/exercises/transpose/TransposeExample.m
trackler-2.2.1.160 tracks/objective-c/exercises/transpose/TransposeExample.m