一尘不染

算法:使用空格将字符串分成N个部分,因此所有部分的长度几乎相同

algorithm

我正在寻找一种将字符串分割成一定数量的部分的算法。这些部分应包含完整的单词(因此,空格用于分割字符串),并且这些部分的长度应几乎相同,或包含可能最长的部分。

我知道编写一个可以实现我想要的功能的代码并不难,但是我想知道是否为此目的使用了一种经过验证的快速算法?

编辑:为了澄清我的问题,我将向您介绍我要解决的问题。

我生成固定宽度的图像。在这些图像中,我使用PHP中的GD和Freetype编写了用户名。由于我的宽度固定,因此我想将名称分成两行或三行(如果它们不匹配)。

为了填充尽可能多的空间,我想以每行包含尽可能多的单词的方式拆分名称。我的意思是,为了使每一行的长度接近整个文本块的平均行长,一行中的单词数应尽可能多。因此,如果有一个长词和两个短词,则如果使所有行都等长,则两个短词应排成一行。

(然后,我使用1、2或3行来计算文本块的宽度,如果它适合我​​的图像,我将其渲染。即使有3行并且不适合,我也会减小字体大小,直到一切都好为止。)

示例: This is a long text 应显示如下内容:

This is a
long text

要么:

This is
a long
text

但不是:

This
is a long
text

而且不是:

This is a long
text

希望我能清楚地解释我要寻找的东西。


阅读 276

收藏
2020-07-28

共1个答案

一尘不染

如果您在谈论换行,请看一下Dynamic Line
Breaking
,它提供了一种动态编程解决方案,可以将单词分成几行。

2020-07-28