大数的加法

/思路:先把两个字符串的所有字符存入数组array1,在比较数组中的元素,得到相同元素的位置存入数组sameArray;再遍历数组array1,去除元素位置属于sameArray的元素,剩下的元素存入数组array2;再转化成字符串

-(NSString *)method1WithString1:(NSString *)str1 andString2:(NSString *)str2{

//    NSString *str1 = @"12345";

//    NSString *str2 = @"34567";

    NSMutableArray *array1 = [[NSMutableArray alloc] init];

    NSMutableArray *array2 = [[NSMutableArray alloc] init];

    NSMutableArray *sameArray = [[NSMutableArray alloc] init];

    

    for (int i = 0; i < [str1 length]; i++) {

        NSString *tmpStr = [str1 substringWithRange:NSMakeRange(i, 1)];

        [array1 addObject:tmpStr];

    }

    

    for (int i = 0; i < [str2 length]; i++) {

        NSString *tmpStr = [str2 substringWithRange:NSMakeRange(i, 1)];

        [array1 addObject:tmpStr];

    }

    

    for (int i = 0; i < array1.count - 1; i++) {

        NSString *compareStr1 = [array1 objectAtIndex:i];

        for (int j = i+1; j < array1.count; j++) { 

            NSString *compareStr2 = [array1 objectAtIndex:j];

            if ([compareStr1 isEqualToString:compareStr2]) {

                [sameArray addObject:[NSNumber numberWithInt:j]];

            }

        }

    }

    

//    NSLog(@"sameArray = %@",sameArray);

    

    for (int i = 0;i < array1.count;i++) {

        NSNumber *index = [NSNumber numberWithInt:i];

        if (![sameArray containsObject:index]) {

            [array2 addObject:[array1 objectAtIndex:[index intValue]]];

        }

    }

    

//    NSLog(@"array2 = %@",array2);

    

    NSString *resultStr = [[NSString alloc] init];

    for (NSString *obj in array2) {

//        NSLog(@"");

        resultStr = [resultStr stringByAppendingFormat:@"%@",obj];

    }

    

    [array1 release];

    [array2 release];

    [sameArray release];

//    NSLog(@"resultStr = %@",resultStr);

    return [resultStr autorelease];

}



-(NSString *)method3WithNumString1:(NSString *)a1 andNumString2:(NSString *)a2{

//    NSString *a1 = @"112233445566778899";

//    NSString *a2 = @"998877665544332211";

    

    NSMutableArray *arrayA1 = [[NSMutableArray alloc] initWithCapacity:MAXLEN];

    NSMutableArray *arrayA2 = [[NSMutableArray alloc] initWithCapacity:MAXLEN];

    

    NSMutableArray *arrayV1 = [[NSMutableArray alloc] initWithCapacity:MAXLEN];

    NSMutableArray *arrayV2 = [[NSMutableArray alloc] initWithCapacity:MAXLEN];

    NSMutableArray *arrayV3 = [[NSMutableArray alloc] initWithCapacity:MAXLEN];

    

    for (int i = 0; i < [a1 length]; i++) {

        NSString *tmpStr = [a1 substringWithRange:NSMakeRange(i, 1)];

        [arrayA1 addObject:tmpStr];

    }

    

    for (int i = 0; i < [a2 length]; i++) {

        NSString *tmpStr = [a2 substringWithRange:NSMakeRange(i, 1)];

        [arrayA2 addObject:tmpStr];

    }

    

    for (int i = 0; i < arrayA1.count; i++) {

        NSString *obj = [arrayA1 objectAtIndex:arrayA1.count-1-i];

        [arrayV1 addObject:[NSNumber numberWithInt:[obj intValue]]]; 

    }

    

    for (int i = 0; i < arrayA2.count; i++) {

        NSString *obj = [arrayA2 objectAtIndex:arrayA2.count-1-i];

        [arrayV2 addObject:[NSNumber numberWithInt:[obj intValue]]];

    }

    

    for (int i = 0; i < MAXLEN; i++) {

        int num1;

        int num2;

        if (i >= arrayV1.count) {

            num1 = 0;

        }else{

            num1 = [[arrayV1 objectAtIndex:i] intValue];

        }

        

        if (i >=arrayV2.count) {

            num2 = 0;

        }else{

            num2 = [[arrayV2 objectAtIndex:i] intValue];

        }

        

        [arrayV3 addObject:[NSNumber numberWithInt:num1 + num2]];

    }

    

    for (int i = 0; i < MAXLEN; i++) {

        int numi = [[arrayV3 objectAtIndex:i] intValue];

        int numi1;

        if (i+1 > MAXLEN-1) {

            numi1 = 0;

        }else{

            numi1 = [[arrayV3 objectAtIndex:i+1] intValue];

        }

        

        if (numi >= 10 && i+1 < MAXLEN) {

            [arrayV3 replaceObjectAtIndex:i+1 withObject:[NSNumber numberWithInt:numi1 + numi/10]];

            [arrayV3 replaceObjectAtIndex:i withObject:[NSNumber numberWithInt:numi%10]];

            

            

        }

    }

    

    int z = 0;

    NSString *str = [[NSString alloc] init];

    for (int i = MAXLEN - 1; i>=0; i--) {

        if (z == 0) {

            if ([[arrayV3 objectAtIndex:i] intValue] != 0) {

//                NSLog(@"%d",[[arrayV3 objectAtIndex:i] intValue]);

                str = [str stringByAppendingFormat:@"%d",[[arrayV3 objectAtIndex:i] intValue]];

                z = 1;

            }

        }else{

//            NSLog(@"%d",[[arrayV3 objectAtIndex:i] intValue]);

            str = [str stringByAppendingFormat:@"%d",[[arrayV3 objectAtIndex:i] intValue]];

        }

    }

    

//    NSLog(@" z = %d",z);

    if (z == 0) {

        str = [str stringByAppendingFormat:@"0"];

    }

//    NSLog(@"str = %@",str);

    

    return [str autorelease];

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值