【发布时间】:2012-08-03 11:06:30
【问题描述】:
想象有一组任意字符串。我们现在假设除了几个后续字符之外它们都是相等的(如果这个假设不成立,我可以返回错误)。我现在想派生一个正则表达式来识别字符串中不同的部分。
输入: “你好 Alice,我是 Bob。”、“你好 John,我是 Bob。”、“你好 Josh,我是 Bob。” 输出: “你好 (.+),我是 Bob。” 输入: “星期一”、“树”、“狗” 输出: 错误也许找到longest common substrings 或Levenshtein distance 会有所帮助?我还不确定其中一个是否真的适用于我的问题或如何使用它们来解决它。
【问题讨论】:
-
既然是作业,我会尽量给出一个更“周到”的提示。我不确定您在基本计算理论方面的背景是什么,但是将此类问题想象为 DFA(或者,在这种情况下,可能是等效的 NFA)通常会有所帮助。尝试创建一个产生正确结果的状态图并将其转换为正则表达式。
-
不知道为什么这被标记为作业。它不是!无论如何......我还看不出这与自动机有什么关系,你能更详细地解释一下吗?我也不明白为什么我的例子与我的问题不符。如果你能告诉我你的意思,我会努力改进我的问题。