这是我的困境。
例如我有这个字符串:
"1 2 3 4 5 ..... 100",但它可以是任何长度(通常大得多,谈论 4 位数字)。
我需要做的:根据已知位置重新排列字符串的元素。 例如:所讨论的位置是 70。我需要有以下输出: “70 71 ....100 1 2 3 ...69”
条件:
- 我知道 key :例如上面的“70”。也可以是 500、5000,取决于字符串长度。
- 我不能使用任何字符串缓冲区或字符串管理函数。
- 几乎没有内存可用。
- 有两个可用的 1 字节缓冲区。
- 操作应该以尽可能少的步骤完成(时间紧迫)。
我一直在努力寻找一个不依赖于字符串中键位置的好算法。基本上左/右移动取决于我仍然是哪一半,这使得它进行了大量的读/写,我不希望那样。
非常感谢!
最佳答案
std::vector<std::string> numbers((std::istream_iterator<std::string>(std::cin)),
std::istream_iterator<std::string>());
std::rotate(numbers.begin(), numbers.begin() + 70, numbers.end());
关于c++ - C/C++ 字符串转移到特定元素 - 最少的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9071075/