【发布时间】:2023-01-17 23:06:44
【问题描述】:
所以我有一个有趣的任务要完成。 用户基本上输入了一个长字符串,我需要查看给定字符串中是否包含子字符串。我们得到了 5 条规则——5 个子串,分别命名为 S1、S2、S3、S4、S5。
S1 应该是两位数,重复两次。
S2 应该是一个或多个小写字母——例如 abc、aaabc、a、abcd 等。
S3 应该是给定间隔中的几个字母 - a、b、c、d - 可以是 ab、ac、ad、 公元前等。
S4 应该是 3 个相同的数字 - 111、333、222 等。
S5 应与 S3 相同。
因此,用户应输入字符串并继续这样做,直到存在具有子字符串且匹配这 5 个条件的字符串。 例如:
::??!:1dasw88kqlbc333bclqpelk?-, 这里
s1 = 88
s2 = kql
s3 = 公元前
s4 = 333
s5 = 公元前。
模式是正确的。 我应该如何处理这个问题?我最初的想法是将我的字符串分组到一个字符数组中,然后开始将每个字符与下一个字符进行比较,直到我得到完美匹配,但这失败了,因为我不知道 s2 的大小。可能是 1,可能是 10,可能更多。 这个问题有更好更通用的方法吗?
谢谢你。
【问题讨论】:
-
您是否考虑过使用正则表达式又名正则表达式?
-
为什么不是 S2 = dasw?
-
允许重叠吗?如果从测试字符串中删除 88,S1 将由 33 实现,但这也是 S4 实现的一部分。事实上,整个事情都可以通过 abc111 来完成。
标签: c#