Java中输入数据集的匹配规则集

我正在解决一个有两个输入集的问题


输入1:


多组规则(示例):


规则集1:


1. I am $name

2. I am $age years old

3. $bookname is my favorite book

   ....

规则集2:


1. I love $sportname

2. $color is my favorite color

   ....

规则集3:


1. $fruit is my favorite fruit

2. I am a $diet

3. I speak $language

4. I am from $countryname

   ....

这里 $name,$age,$bookname... 是占位符。可能有多个这样的规则集。没有限制。


输入2:


多组输入字符串。


套装 1:


1. I am 26 years old

2. I am James

   .....

套装 2:


1. I am John

2. ToKillAMockinBird is my favorite book

   .......

第 3 组:


1. TuesdaysWithMorrie is my favorite book

2. I am Bill

3. I am 26 years old

   ......

套装 4:


1. I am Jack

2. I am 27 years old

3. WarAndPeace is my favorite book

   ......

套装 5:


1. I am a vegan

2. I speak English

   ......

第 6 组:


1. Purple is my favorite color

2. I love football

   ......

问题陈述 :


对于输入 2 中的每个字符串集,我需要与输入 1 进行匹配,并判断这些字符串是否以相同的顺序出现。


输出 :


Set1 --> false

Set2 --> true

Set3 --> false

Set4 --> true

Set5 --> true

Set6 --> false

我尝试通过迭代每个输入集中的每个字符串并检查它是否存在,如果存在,给它们一个数字,最后检查这些数字是否按升序排列来尝试暴力。但是,这效率不高。输入的Set1、Set2可能是巨大的数据集。有更好的方法来解决这个问题吗?


PIPIONE
浏览 50回答 1
1回答

呼啦一阵风

这是一个想法:使用一些特殊的分隔符(或者周围的模式)将规则集和输入集中的行连接成一行所以规则集 #1 可以看起来像这样I am $name ### I am $age years old ### $bookname is my favorite book或像这样[I am $name] [I am $age years old] [$bookname is my favorite book]然后您可以对输入集执行相同的操作并进行比较。在我看来,用正则表达式替换占位符\w+可能就足够了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java