先使用线性扫描完成归一化:
给定一段英文文本,其中的排版可能是混乱的:单词之间可能夹着多个连续空格,可能出现多个连续的标点符号,标点符号后面可能没有空格而直接跟着字母。请把这段文本整理成规范的排版。
先做归一化。把文本切分成若干单词(由连续字母组成)与标点符号,空格只起分隔作用。两个单词之间不论出现多少个标点符号(其间也可能夹杂空格),都只保留最先出现的那一个,并把它紧贴到前面单词的末尾(之间不留空格);若某个标点符号前面没有任何单词,则将其丢弃。相邻两个单词(连同紧贴其后的标点)之间用恰好一个空格分隔,整段文本首尾不留空格。标点符号集合为逗号、句号、分号、冒号、感叹号、问号共六种,对应字符为 , . ; : ! ?。
再做折行。把归一化后的文本按每行最多 个字符输出,且每一行都不能以空格开头。折行以单词为单位、不拆开单词,采用贪心策略:从左到右依次把单词放入当前行,若加入下一个单词(连同分隔它的一个空格)会使当前行超过 个字符,就另起一行。若某个单词自身长度超过 ,则它从新的一行开始,按每行前 个字母加一个连字符 - 的方式切分,最后剩余不足一行的部分留在当前行,后续单词可以继续接在它后面。
输入一行,为待整理的原始文本,长度为L(1≤L≤2×105)。文本只包含大小写英文字母、空格以及六种标点符号 , . ; : ! ?,且至少包含一个字母。
输出整理并折行后的文本。每行不超过 80个字符,行首与行末均无多余空格。
输入
the quick,brown fox ?? jumps.Over the lazy dog
输出
the quick, brown fox? jumps. Over the lazy dog
说明
连续空格被压成一个;quick,brown 中的逗号紧贴 quick 并在其后补一个空格;两个连续问号只保留第一个并贴到 fox 后;jumps.Over 的句号贴到 jumps 后再空格。归一化结果长度不足80,整段占一行。
输入
DeepSeek is hiring engineers for the agent harness team and the full stack team, both roles require solid fundamentals and the ability to solve brand new problems on the spot.
输出
DeepSeek is hiring engineers for the agent harness team and the full stack team,
both roles require solid fundamentals and the ability to solve brand new
problems on the spot.
说明
归一化后按每行不超过 80个字符贪心折行,单词整体不拆开,行首无空格。
输入
supercalifragilisticexpialidocioussupercalifragilisticexpialidociousantidisestablishmentarianism
输出
supercalifragilisticexpialidocioussupercalifragilisticexpialidociousantidisesta-
blishmentarianism
说明
这是一个长度为96的超长单词,超过80,按每行79个字母加连字符-切分,首行输出前79个字母加-共个字符,剩余 80个字母另起一行。
本题属于以下题库,请选择所需题库进行购买
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册