在C++中,如何将字符串拆分为大小均匀的字符串?
例如,我有一个字符串"012345678",并希望它将它分成5个较小的字符串,这应该给我一些像"01","23","45","67","8"这样的东西.
我无法确定较小字符串的长度.在前面的示例中,原始字符串的大小为9,我想将其拆分为5个较小的字符串,因此除了最后一个字符串之外的每个较小的字符串应该是9/5 = 1的长度,但最后一个字符串的长度为9 - 1*4 = 5,这是不可接受的.
所以这个问题的正式定义是:原始字符串被拆分为完全n个子字符串,并且没有两个子字符串的长度差异应大于1.
我的重点不是C++语法或库.这是如何设计算法,以便返回的字符串的大小几乎相等.
给定一个包含N个元素的数组,我正在寻找M(M <N)个连续的子阵列,这些子阵列的长度相等或长度大多相差1个.例如,如果N = 12且M = 4,则所有子阵列都会具有相等的N/M = 3的长度.如果N = 100且M = 12,我期望长度为8和9的子阵列,并且两个尺寸应该在原始阵列内均匀分布.这项简单的任务变得有点微妙.我想出了Bresenham的线算法的改编版,当用C++编码时,它看起来像这样:
/// The function suggests how an array with num_data-items can be
/// subdivided into successively arranged groups (intervals) with
/// equal or "similar" length. The number of intervals is specified
/// by the parameter num_intervals. The result is stored into an array
/// with (num_data + 1) items, each of which indicates the start-index of
/// an interval, the last additional index being a sentinel item …Run Code Online (Sandbox Code Playgroud)