如何在不分配内存的情况下反转字符串

时间:2012-02-17 05:10:19

标签: iphone nsstring reverse

我被问到如何在不分配内存的情况下反转字符串的问题。任何人?

3 个答案:

答案 0 :(得分:4)

无论是否分配内存,都无法撤消NSString,因为NSString是不可变的。

在不分配内存的情况下,您无法撤消NSMutableString,因为NSMutableString提供的替换其内容的唯一方法需要在NSString中指定新字符,必须分配。

CFMutableString有同样的“问题”。

答案 1 :(得分:1)

void reverseStringBetter(char* str)
{
    int i, j;
    i=j=0;

    j=strlen(str)1;
    for (i=0; i<j; i++, j-)
    {
        str[i] ^= str[j] ;
        str[j] ^= str[i] ;
        str[i] ^= str[j] ;
    }
}

答案 2 :(得分:0)

NSString是不可能的,因为它们是不可变的,唯一的方法是创建一个新的字符串。

虽然这可能不是您要查找的内容,但您可以将NSString转换为普通的c字符串,然后进行就地编辑。你仍然在分配内存,但是你至少可以通过修改字符串来获得所需内容的一半。

我不确定您的用例是什么,因为不想分配内存,或者这只是一个假设。