万以内的数字转字符串

2019-03-14  本文已影响0人  imzhuzx

面试中遇到一个面试题

面试题

面试时想了十分钟只写出大概的流程,回来之后补回来完整的代码。

- (void)numberTransformString{
    NSArray *numberArray = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9"];
    NSArray *stringArray = @[@"壹", @"贰", @"叁", @"肆", @"伍", @"陆", @"柒", @"捌", @"玖"];
    NSArray *stringsArray = @[@"", @"拾", @"百", @"仟", @"万", @"十"];
    NSString  *numberString = @"70802";
    NSMutableArray *numbersArray = [[NSMutableArray alloc] init];
    for (NSInteger i = numberString.length-1; i >= 0 ; i --) {
        NSString *numString = [numberString substringWithRange:NSMakeRange(i, 1)];
        [numbersArray addObject:numString];
    }
    NSMutableString *resultStr = [[NSMutableString alloc] init];
    BOOL is0 = NO;
    for (NSInteger i = numbersArray.count-1; i >= 0; i--) {
        NSString *num = numbersArray[I];
        if ([num isEqualToString:@"0"]) {
            if (is0 == YES) {
                is0 = NO;
            }else{
                if (i != 0) {
                    [resultStr appendString:@"零"];
                }
                is0 = YES;
            }
        }else{
            for (int m = 0; m < numberArray.count; m ++) {
                NSString *numStr = numberArray[m];
                if ([num isEqualToString:numStr]) {
                    NSString *newStr = stringArray[m];
                    NSString *newStr2 = stringsArray[I];
                    [resultStr appendString:newStr];
                    [resultStr appendString:newStr2];
                }
            }
            is0 = NO;
        }
    }
    NSLog(@"%@", resultStr);
}

不知道有没有更好的实现方法

上一篇 下一篇

猜你喜欢

热点阅读