【问题标题】:Pattern matching : Matching a String with a pattern模式匹配:将字符串与模式匹配
【发布时间】:2016-02-04 03:23:39
【问题描述】:

我试图匹配字符串中的模式。我没有想法如何在 Java 中以良好的时间复杂度做到这一点。

不,它不是简单的正则表达式匹配(但喜欢被证明是错误的

我正在尝试的是,

模式:“1221”(表示1个单词重复一次,第2个单词重复两次,最后一个单词与第一个单词相同)

有效输入:“aabbbbbbaa”(aa出现在开头和结尾,而中间部分被bbb重复两次占据)

我尝试了以下方法,但都失败了

  • 我尝试使用模式循环输入。但这并没有解决问题,虽然我可以通过更多循环来实现它,但它会成倍增加时间复杂度。
  • 尝试了递归,还是没有用。

我还可以尝试哪些其他方法?

我认为动态编程可能是答案,但我无法确定终止条件。

任何帮助将不胜感激。

【问题讨论】:

  • 添加你尝试过的代码
  • 我不要代码,我可以自己编码。我只想要这种方法。虽然我很想有一个样品。正如我在帖子中提到的,我发布了两种方法。
  • 听起来非常接近this
  • 谢谢。是的,它是相似的,但我的问题是一个更大问题的故障。再次寻找方法
  • 如果相似,则说明您没有正确解释问题。例子是个好东西,但它不能代替好的定义!

标签: java regex algorithm pattern-matching time-complexity


【解决方案1】:

您可以使用简单的正则表达式,例如:

^(.+)(.+)\2\1$

这正是你想要的:

【讨论】:

  • 你确定这会起作用吗?我不这么认为。模式和输入可能会改变。模式可以是 1111、12341、112 或任何值
  • @Novice123,我认为您可以动态创建正则表达式。我提供的正则表达式适用于1221 模式
  • 好的,谢谢。如果它解决了答案,我将尝试接受答案。谢谢解释
  • 你只提供了1221,这个答案是合适的。你能提供更多匹配的例子吗?
  • 让我试试给定的解决方案。如果这不起作用,我将编辑问题并提供更多案例
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 2018-10-04
  • 2016-01-08
相关资源
最近更新 更多