-2

好的,算法奇才。假设您有以下输入:

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

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

  1. 在每个 [start] 和 [end] 标记的开头和结尾处将输入分成几行
  2. 如果蓝色在 [start] 和 [end] 标签之间,则将其值更改为灰色
  3. 如果棕色在 [start] 和 [end] 标签之间,则将其值更改为棕褐色

预期的输出应该完全如下所示:

  1. 天是蓝的
  2. [开始]
  3. 天空是灰色的
  4. [结尾]
  5. 沙子是棕色的
  6. [开始]
  7. 沙子是棕褐色的
  8. [结尾]
  9. 天空是蓝色的,沙子是棕色的

什么是最佳算法来做到这一点?

注意:不管你用什么语言来回应,只要思路清晰就行

4

1 回答 1

0

可以使用 [start]、[end]、blue、brown 和其他所有内容作为词位创建上下文无关语法,构建解析树,修改它并重建字符串。

不过,似乎有点牵强。相反,请进行搜索和替换,将 [start] 替换为 \n[start]\n,将 [end] 替换为 \n[start]\end。然后越过线条,在开始和结束之间的线条上替换你的颜色。

不过,使用解析器要酷得多。

于 2012-10-16T06:53:55.330 回答