我想做的是转换一个字符串,例如 “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;
在速度方面要好一些,因为前一个交换元素两次,而这个交换每对交换一次:
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;
关于c++ - 如何在 C++ 中反转 2 block 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952229/