好的,算法wizzys。我们假设你有这个输入:
天空是蓝色的[开始]天空是蓝色的[结束]沙子是棕色的[开始]沙子是棕色的[结束]天空是蓝色的,沙子是棕色的
您希望根据以下规则对其进行解析:
预期输出应如下所示:
这样做的最佳算法是什么?
注意:只要思路流畅清楚,用什么语言来回应并不重要
答案 0 :(得分:0)
我试图在C#中实现它。请检查ideone。 http://ideone.com/7Ubsz
答案 1 :(得分:0)
可以 创建一个无上下文语法,包括[start],[end],blue,brown和其他所有内容作为lexemes,构建一个解析树,修改它并重建字符串。
但是,似乎有点像拉伸。相反,进行搜索和替换,将[start]替换为\ n [start] \ n,将[end]替换为\ n [start] \ end。然后越过这些线,在开始和结束之间的线上替换你的颜色。然而,使用解析器会更酷。