首页 > 解决方案 > 反转字符串?更优化的方式

问题描述

#include<iostream>
#include<string.h>
using namespace std;
int main ()
{
    char str[50], temp;
    int i, j;
    cout << "Enter a string : ";
    gets(str);
    j = strlen(str) - 1;
    for (i = 0; i < j; i++,j--)
    {
        temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
    cout << "\nReverse string : " << str;
    return 0;
}

有没有更优化的方法而不使用这个函数来反转字符串?该函数将从 S 的最后一个位置开始,并将继续复制字符串反转。而不是使用 tmp 变量。

string reverse(string s)
{
    string reversed ;
    for(int is.length();int i >0;--)
    {
        reversed +=s[i];
    }
return reversed;
    }

标签: c++arraysstringfunctionfor-loop

解决方案


您可以使用std::reverse将字符串反转到位,复杂度为 (last - first)/2 交换,这正是第一个函数的复杂度,但更简洁。

第二种方法有额外分配的开销,最终可能会变慢。


推荐阅读