这个反向字符串代码正确吗
Is this reverse string code correct?
当我在IDE上运行此代码时,它对我有效,但在有练习的网站上不起作用。我有一个分割错误。那么这个代码正确吗?我做错了吗?
#include <iostream>
#include <string>
using namespace std;
string FirstReverse(string str) {
for (int i = 0, back = str.size()-1; i != back; ++i, --back)
{
char c = str[back];
str[back] = str[i];
str[i] = c;
}
return str;
}
int main() {
cout << FirstReverse("hello");
return 0;
}
此外,最好的方法是什么?
您的索引只需要达到长度的一半,这样我们就可以确保一对之间的交换只发生一次:
for (int i = 0; i < str.size() / 2 ; i ++)
{
char c = str[str.size() - 1 - i];
str[str.size() - 1 - i] = str[i];
str[i] = c;
}
如果将循环条件更改为"i<=back",则不会导致分段错误。这是因为当尺寸-1是偶数时,i&背部永远不会变得平等。因此循环将继续进行而不中断&尝试访问字符串之外的字符串成员。
只需将条件从!=
更改为<=
,它就会得到解决。
相关文章:
- 编译包含字符串的代码时遇到问题
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 我无法在 qt 的C++代码中定义字符串
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 有人可以解释一下这段代码如何能够反转字符串
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符
- 如何用符合C++核心准则的代码替换C风格的字符串解析
- C++/CLI访问字符串::来自非CLI代码的格式
- MSVC UTF8字符串编码使用了不正确的代码点
- C++指向对象的指针堆数组中,如何将字符串传递给特定对象?有一些代码请看一下:
- 将浮点数转换为字符串时如何加快此代码的速度?
- C++代码,用于在用户插入的字符串的每个元音之后插入一对字符
- 如何获取包含 NULL 字符的外壳代码字符串的长度
- 为什么 for 循环只接受这个简单代码中的最后一个字符串?
- 返回所有代码 - 字符串
- 我能做些什么来加速这个代码(字符串相似性)
- 不知道该为函数的最后一个代码字符串写什么
- 可以将代码字符串传递到c++宏中吗?