ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

算法札记:字符串剪切粘贴实现

算法札记:字符串剪切粘贴实现 从原字符串中提取索引i到j的子串将其插入到位置kk不能在被剪切区间内。通过边界检查确保索引有效删除原区间后根据k的位置调整插入点最终返回新字符串#include string #include stdexcept std::string cutAndPaste(const std::string original, size_t i, size_t j, size_t k) { if (i j || j original.size() || k original.size()) { throw std::out_of_range(索引越界); } if (k i k j) { throw std::invalid_argument(k 不能位于被剪切的区间内); } // 1. 提取子串从 i 到 j共 j - i 1 个字符 std::string sub original.substr(i, j - i 1); // 2. 复制原字符串并删除该子串 std::string result original; result.erase(i, j - i 1); // 3. 计算插入位置在删除后的字符串中 size_t insertPos; if (k i) { // k 在剪切区间之前删除不影响 k 的位置 insertPos k 1; // 第 k 位后面就是索引 k1 } else { // k j // k 在剪切区间之后删除后 k 的位置向前移动了子串长度 size_t len j - i 1; insertPos k - len 1; // 原来第 k 位后面现在索引变为 k - len 1 } // 4. 插入 result.insert(insertPos, sub); return result; }
返回列表