(感谢下面的 greg0ire 对关键概念的帮助)
挑战:构建一个程序来查找所有子字符串并用颜色属性“标记”它们(有效地在 XML 中突出显示它们)。
规则:
- 这只应该对长度为 2 或更长的子字符串进行。
- 子字符串只是连续字符的字符串,其中可能包括非字母字符。请注意,空格和其他标点符号不会分隔子字符串。
- 字符大小写不能忽略。
- “突出显示”应该通过在 XML 中标记子字符串来完成。您的标记应采用该子字符串和相同子字符串唯一的正数的
<TAG#>theSubstring</TAG#>
形式#
。 - 该算法的优先级是找到最长的子字符串,而不是在文本中匹配多少次。
注意:下面示例中显示的标记顺序并不重要。为了清楚起见,它只是由 OP 使用。
示例输入:
LoremIpsumissimplydummytextoftheprintingandtypesettingindustry.LoremIpsumhasbeentheindustry'sstandarddummytexteversincethe1500s,whenanunknownprintertookagalleyoftypeandscrambledittomakeatypespecimenbook.
部分正确的输出(在此示例中,OP 可能没有完全替换)
<TAG1>LoremIpsum</TAG1>issimply<TAG2>dummytext</TAG2>of<TAG5>the</TAG5><TAG3>print</TAG3>ingand<TAG4>type</TAG4>setting<TAG6>industry</TAG6>.<TAG1>LoremIpsum</TAG1>hasbeen<TAG5>the</TAG5><TAG6>industry</TAG6>'sstandard<TAG2>dummytext</TAG2>eversince<TAG5>the</TAG5>1500s,whenanunknown<TAG3>print</TAG3>ertookagalleyof<TAG4>type</TAG4>andscrambledittomakea<TAG4>type</TAG4>specimenbook.
您的代码应该能够处理边缘情况,例如:
示例输入 2:
hello!TAG!</hello.TAG.</
示例输出 2:
<TAG1>hello</TAG1>!<TAG2>TAG</TAG2>!<TAG3></</TAG3><TAG1>hello</TAG1>.<TAG2>TAG</TAG2>.<TAG3></</TAG3>
获胜者,冠军:
- 最优雅的解决方案获胜(根据其他评论、赞成票来判断)
- 使用 shell 脚本的解决方案的奖励积分/注意事项
小说明:
- 输入可以硬编码或从文件中读取
- 标准仍然是“优雅”,诚然有点模糊,但它也封装了简单的字符/行数。其他人的评论和/或赞成票也表明 SO 社区如何看待挑战