c++ - 如何在 C++ 中反转 2 block 中的字符串?

标签 c++ string reverse

我想做的是转换一个字符串,例如 “a4b2f0”变成“f0b2a4” 或者更简单地说:

turning "12345678" into "78563412"

字符串总是有偶数个字符,所以它总是除以 2。我不太确定从哪里开始。

最佳答案

一个简单的方法是这样的:

std::string input = "12345678";
std::string output = input;
std::reverse(output.begin(), output.end());
for(size_t i = 1 ; i < output.size(); i+=2)
    std::swap(output[i-1], output[i]);
std::cout << output << std::endl;

Online demo

在速度方面要好一些,因为前一个交换元素两次,而这个交换每对交换一次:

std::string input = "12345678";
std::string output = input;
for(size_t i = 0, middle = output.size()/2, size = output.size(); i < middle ; i+=2 )
{
     std::swap(output[i], output[size - i- 2]);
     std::swap(output[i+1], output[size -i - 1]);
}
std::cout << output << std::endl;

Demo

关于c++ - 如何在 C++ 中反转 2 block 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952229/

相关文章:

c++ - 如何比较#define定义的字符串和整数?

c++ - Boost序列化断言失败

c++ - 为子类使用基本默认构造函数(带参数)

c - 你如何传递一个字符数组

Django HttpResponseRedirect和reverse()

c++ - 队列调用事件循环中的一个插槽由 Qt 以向后顺序处理

c++ - 如何初始化字符串指针?

java - 我想在 Java 中反转字符串并删除和复制

python - 如何通过 reverse() 使用现有 View ?

python - 如何在某个位置添加字符串?