c++ - 反转字符串?更优化的方式
问题描述
#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;
}
解决方案
您可以使用std::reverse
将字符串反转到位,复杂度为 (last - first)/2 交换,这正是第一个函数的复杂度,但更简洁。
第二种方法有额外分配的开销,最终可能会变慢。
推荐阅读
- apache-spark - 我怎么知道镶木地板文件块的大小?
- r - 从逻辑回归结果创建条形图的问题
- javascript - 警告:无法对未安装的组件执行 React 状态更新。这是一个无操作,但它表明您的应用程序中存在内存泄漏
- python - 返回 Pandas Dataframe 中字符串中第一个数字/字母的索引/位置
- javascript - Puppeteer - 如何评估返回文本的 XPath?
- scrapy - Scrapy - 动态文件命名表单解析项
- php - 解析多维数组 PHP
- javascript - 如何在反应中每 5 秒加 1 和 setState
- javascript - 如何在 Javascript 中通过用户操作使反馈消失?
- .net - AWS lTelerik.Web.UI.WebResource.axd?type=rau HTTP/1.1" 404 196?