在类别中递归地反转 NSString

Reverse NSString recursively in category

我将此 类别 用于以 递归 方式反转 NSString。我得到正确的答案。但我不确定 内存管理 是否合适。我对 Objective-C.

中的内存管理了解不多

任何其他有效的方法都将是非常令人钦佩的。

-(NSString *)reverseString{
    if ([self length]<2) {
        return self;
    } else {
        return [[[self substringFromIndex:1] reverseString] stringByAppendingString:[self substringToIndex:1]];
    }
}

然而,这个问题类似于Reverse NSString text但不是重复的,因为这里我用递归来实现它。我特别询问了内存消耗,而不是任何代码示例。

使用递归来反转字符串是一个有趣的思维练习,但它会非常缓慢并且会严重浪费内存。您需要创建 2n 个临时字符串。 (其中n是你的字符串中的字符数)那些字符串中的n个只有1个字符长,另外n个字符串是1、2、3、4、5等字符,最多n-1个。

(内存分配很慢。)

此外,您还创建了 n 个堆栈帧。正如 rmaddy 在他的评论中所说,对于很长的字符串,您可能会导致堆栈溢出。

如果您这样做是为了了解递归,那很好。否则,完全放弃这种方法并编写向后循环遍历数组的代码,将每个字符附加到可变字符串。