擅长:python、mysql、java
<p>因为知道在哪里换行取决于一个单词的长度,所以你不能把<code>T</code>当作一个字符序列来处理,除非你想回溯(如果一个单词读到一半,空间就用完了怎么办?)。你知道吗</p>
<p>相反,我会将<code>T</code>分解成一个单词列表,然后遍历它们:</p>
<pre><code>lines = []
line = ''
for word in T.split(' '):
if len(word) + len(line) <= L:
# we can add the word onto the end of the current line
else:
# the word flows past the end of the current line, start a new one
</code></pre>
<p>请注意,预期的输出不会在第30列换行,而是在第25列换行。否则,第3行将为26个字符长,并包含:</p>
<pre><code>prosuere, risus non mollis
</code></pre>
<p>另一种解决方案是,通过使用<code>str.rfind</code>的极限参数来找到断点,然后使用以下方法迭代分解<code>text</code>:</p>
<pre><code>while T:
# If T is already short, we don't have to worry about breaking it up
if len(T) <= L:
line = T
T = ''
else:
# Find the rightmost space in the T that occurs before column L
furthest_space = T.rindex(' ', 0, L)
# Now you can figure out the next line from the position of the
# furthest space and cut that part off of your T
...
print(line)
</code></pre>