我正在寻找一种算法,它接受一个字符串并将其拆分成一定数量的部分。这些部分应包含完整的单词(所以使用空格来分割字符串),并且这些部分应该具有几乎相同的长度,或者包含最长的可能部分。算法:使用空格将字符串拆分为N部分,因此所有部分的长度几乎相同
我知道编写一个可以做我想做的功能并不困难,但我想知道是否有一个用于此目的的经过验证的快速算法?
编辑: 为了澄清我的问题,我将描述你正在尝试解决的问题。
我生成固定宽度的图像。在这些图像中,我使用PHP中的GD和Freetype编写用户名。因为我有一个固定的宽度,我想把名字分成2或3行,如果它们不适合一个。
为了尽可能多地填充空间,我想以每行包含尽可能多的单词的方式拆分名称。我的意思是说,为了保持每行的长度接近整个文本块的平均行长度,在一行中应该包含尽可能多的单词。所以如果有一个长单词和两个短单词,那么这两个短单词应该排成一行,如果它使所有行长度相等。 (然后我用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
希望我能更清楚地解释什么,我期待的。
你是什么意思最长的部分? – Larry 2010-03-04 17:55:34
举个例子。例如:对于“示例”,我应该得到“结果” – 2010-03-04 17:58:00
什么语言,java,php或...? – Grumpy 2010-03-04 17:58:15