• Objective-C:字符串的反转Reverse


    OC中字符串的反转方式可以用两种方式来处理:

    第一种:从头到尾取出字符串的每一个字符,然后将其从尾到头添加到可变的字符串中,最后输出即可。

    第二种:将OC内部的字符串转换为C语言中的字符串,然后动态分配一个数组,然后将字符串内容拷贝到数组中,进行首尾交换操作。共进行数组长度/2次操作。

    方式一:OC版本

     1 -(NSMutableString*)Reverse
     2 {
     3     NSUInteger length = [self length];
     4     NSMutableArray *array = [NSMutableArray arrayWithCapacity:length];
     5     
     6     for(long i=length-1; i>=0; i--)
     7     {
     8         unichar c = [self characterAtIndex:i];
     9         [array addObject:[NSString stringWithFormat:@"%c",c]];
    10     }
    11     
    12     
    13     NSMutableString *str = [NSMutableString stringWithCapacity:length];
    14     for(int i=0; i<=length-1; i++)
    15     {
    16         [str appendString:array[i]];
    17     }
    18     return str;
    19  }@end

    方式二:C语言版本

     1 @implementation NSString (Reverse)
     2 -(NSMutableString*)Reverse
     3 {
     4     const char *str = [self UTF8String];
     5     NSUInteger length = [self length];
     6     char *pReverse = (char*)malloc(length+1);//动态分配空间
     7     strcpy(pReverse, str);
     8     for(int i=0; i<length/2; i++)
     9     {
    10         char c = pReverse[i];
    11         pReverse[i] = pReverse[length-i-1];
    12         pReverse[length-i-1] = c;
    13     }
    14     NSMutableString *pstr = [NSMutableString stringWithUTF8String:pReverse];
    15     free(pReverse);
    16     return pstr;
    17 }
    18 @end

      主函数测试:

     1 //  main.m
     2 //  字符串的反转
     3 //
     4 //  Created by ma c on 15/8/18.
     5 //  Copyright (c) 2015年. All rights reserved.
     6 //
     7 
     8 #import <Foundation/Foundation.h>
     9 #import "NSString+Reverse.h"
    10 int main(int argc, const char * argv[])
    11 {
    12     @autoreleasepool
    13     {
    14         NSMutableString *string = [NSMutableString stringWithFormat:@"XYQ-CHINA"];
    15         NSString *str = [NSString stringWithString:[string Reverse]];
    16         NSLog(@"%@",str);
    17     }
    18     return 0;
    19 }

        测试结果如下:

    2015-08-18 19:42:56.696 字符串的反转[2222:136571] ANIHC-QYX
    Program ended with exit code: 0
  • 相关阅读:
    bzoj3729-Gty的游戏【Splay,博弈论】
    pkusc2021游记
    P4922-[MtOI2018]崩坏3?非酋之战!【dp】
    P5782-[POI2001]和平委员会【2-SAT】
    CF1511G-Chips on a Board【倍增】
    noip范围
    [LGOJ5558]心上秋(倍增)
    学习笔记——动态DP
    [NOIP校内集训]不正常的国家
    [BZOJ4712]洪水(树链剖分+DP)
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4740415.html
Copyright © 2020-2023  润新知