c++ - C/C++ 字符串转移到特定元素 - 最少的步骤

标签 c++ string algorithm c-strings

这是我的困境。

例如我有这个字符串:

"1 2 3 4 5 ..... 100",但它可以是任何长度(通常大得多,谈论 4 位数字)。

我需要做的:根据已知位置重新排列字符串的元素。 例如:所讨论的位置是 70。我需要有以下输出: “70 71 ....100 1 2 3 ...69”

条件:

  1. 我知道 key :例如上面的“70”。也可以是 500、5000,取决于字符串长度。
  2. 我不能使用任何字符串缓冲区或字符串管理函数。
  3. 几乎没有内存可用。
  4. 有两个可用的 1 字节缓冲区。
  5. 操作应该以尽可能少的步骤完成(时间紧迫)。

我一直在努力寻找一个不依赖于字符串中键位置的好算法。基本上左/右移动取决于我仍然是哪一半,这使得它进行了大量的读/写,我不希望那样。

非常感谢!

最佳答案

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/

相关文章:

c++ - 在命令行中正确链接库

ios - ObjectiveC 与 iOS 中对 %d 的不同处理

algorithm - 这是一个准确的平均数还是指数移动平均数公式?

algorithm - O(n log n)时间和O(1)空间复杂度与O(n)时间和O(n)空间复杂度的算法

找到最少的矩形以覆盖一组矩形而不重叠的算法

c++ - 堆栈或 BSS 或数据段上的数组最大大小

c++ - 获取所有已使用来源的列表

c++ - 使用 opencv 通过 Filestorage 保存时出错

string - 后记:用省略号截断字符串?

python - 查找字符串中最长的重复序列