解析字符串输入的最佳算法

时间:2012-10-16 05:09:50

标签: algorithm

好的,算法wizzys。我们假设你有这个输入:

天空是蓝色的[开始]天空是蓝色的[结束]沙子是棕色的[开始]沙子是棕色的[结束]天空是蓝色的,沙子是棕色的

您希望根据以下规则对其进行解析:

  1. 将输入分为每个[start]和[end]标记
  2. 开头和结尾的行
  3. 如果它在[start]和[end]标签之间,则将蓝色值更改为灰色
  4. 如果在[开始]和[结束]标签之间将棕色值更改为棕褐色
  5. 预期输出应如下所示:

    1. 天空是蓝色的
    2. [开始]
    3. 天空是灰色的
    4. [结束]
    5. 沙子是棕色的
    6. [开始]
    7. 沙子是棕褐色的
    8. [结束]
    9. 天空是蓝色的,沙子是棕色的
    10. 这样做的最佳算法是什么?

      注意:只要思路流畅清楚,用什么语言来回应并不重要

2 个答案:

答案 0 :(得分:0)

我试图在C#中实现它。请检查ideone。 http://ideone.com/7Ubsz

答案 1 :(得分:0)

可以 创建一个无上下文语法,包括[start],[end],blue,brown和其他所有内容作为lexemes,构建一个解析树,修改它并重建字符串。

但是,似乎有点像拉伸。相反,进行搜索和替换,将[start]替换为\ n [start] \ n,将[end]替换为\ n [start] \ end。然后越过这些线,在开始和结束之间的线上替换你的颜色。

然而,使用解析器会更酷。