给定一个字符串和一个单行长度N(20 < N < 80),按照下面的规则来把字符串做自动换行和文本对齐。
- 每一行的头尾都需要是以单词开始和结束,也就是头尾对齐。
- 单词之间使用空格来分隔。
- 在不切割单词的情况下,每一行需要容纳尽可能多的单词。
- 每一行使用换行符 ‘\n’ 来表示该行结束,该换行符不算入每一行的长度。
- 单词之间的空格数量差异不能大于1,也就是空格需要尽量平均分配。
- 空格多的分隔需要放在前面,少的放在后面。譬如:”a—b—c–d–e\n“,’-‘表示空格。
- 最后一行不需要调整空格的数量,每个单词之间只需要一个空格。同时也不需要换行符’\n’。
- 如果单行是一个单词则不需要空格。
下面的图案是一段文字按照每行30个字符来进行文本对齐后的结果:
输入样例:
data = 'ABC EFG HI J', width = 8
输出样例:
‘ABC EFG\nHI J’
算法思路:
- 方法一:使用递归算法,每次通过搜索空格来取单行最大数字符串来进行排版,一直到最后一行。
- 方法二:使用for循环,每次也是取一行来做排版。单行排版时需要计算空格如何均匀分配,可以采用字符串函数 replace 来进行。