NSString 字符串反转(不考虑复杂 Emoji)

NSString 字符串反转(不考虑复杂 Emoji)

LeetCode 题目链接
另外有一篇字符串反转进阶篇文章推荐阅读:谈谈字符串翻转,来自于Cyandev
思路:把 NSString 字符串转成 C 语言字符串,再用 while 循环交替首尾对应的字符

- (NSString *)reverseString:(NSString *)str {
    NSUInteger length = [str lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
    char s[length+1];   // NSString 转 C 字符串时,长度要加1,因为 C 字符串是以 '\0' 结尾的
    bzero(s, sizeof(s));
    [str getCString:s maxLength:sizeof(s) encoding:NSUTF8StringEncoding];

    size_t start = 0;
    size_t end = start + sizeof(s) - 2;  // 末位是字符串结束标志,这里取倒数第2位字符串作为 end
    while (start < end) {
        char ch = s[start];
        s[start++] = s[end];
        s[end--] = ch;
    }
    NSString *result = [[NSString alloc] initWithCString:s encoding:NSUTF8StringEncoding];
    return result;
}

你可能感兴趣的:(NSString 字符串反转(不考虑复杂 Emoji))