java - 字符串模式匹配

标签 java string algorithm

<分区>

我不知道如何解决这个问题:

给定两个字符串,一个代表一个模式,一个随机字符串,判断它的模式是否与第一个字符串匹配

例如:

string1: "aaba"
string2: "catcatdogcat"

因此,string1 和 string2 是模式匹配的

如果 string2 是 "catcatcatcat",则不会进行模式匹配。

对任何模式和字符串执行此操作。

我知道这是递归,但我很困惑......如何解决这个问题

最佳答案

好吧,我将尝试为此解释一个递归,听起来不错,但我没有机会测试它(不是在家里)。

取 vector v['字母表的大小'],其中 v[i] = string2 中的字母数 = string 1 中的字母 i。

在你的例子中最后是:v['a'] = 3, v[b] =3;

用 1 初始化 vector 。

对于 rec 函数:

你从 string1 中取出第一个字母:a; 代表a from string2是从string2开始到string2+v['a']结束的字符串;这是'c'; 到目前为止,您检查这是否是一个有效的解决方案,它是。

然后你进入 rec( string1 + 1 ) ,再次字母 a, 因为 v['a'] 仍然 = 1 那么你将第二个 a 作为 = 'a'。 您检查这是否是一个有效的解决方案,这不是因为您已经将第一个 a 定义为“c”。 您返回递归并递增 v['a'],从乞讨开始。

你取string1的第一个字母:a; 表示来自 string2 的 'ca' ,(现在 v['a'] = 2 ) 检查是否有效。 rec ( string1 +1 );

等等... 在某一点你会达到 v['a'] = 3 和 v['b'] = 3; 然后使用 rec 函数,您将找到解决方案。

我个人觉得在交互式函数中实现起来更容易,但是你说了一些关于递归的事情,是的。

关于java - 字符串模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19525396/

相关文章:

java - 计算映射中的类实例

c - 我如何切换到读取c中的多个字符

java - 如何将 String#split 与反斜杠字符一起使用?

algorithm - 计算数组中索引对的总数,使得 arr[i] < arr[j] 和 i < j

python - 为什么 expmod 的这两个实现对于大值不同?

java - Android PiP 模式和应用程序生命周期

java - 如何在Scene2d中制作UI动画?

java - 如何从本地 html 文件启动 Java Web?

string - URL 分类的模式匹配

algorithm - 最短路径不是图中的路径