如何判断字符串中存在包含字符掩码所有字符的连续子串?
判断掩码字符是否满足目标字符串连续子串要求
给定仅由小写字母组成的目标单词,以及仅包含唯一小写字母的字符掩码,需要判断:是否存在目标字符串的某一段连续子串,同时满足以下两个条件:
- 子串里的所有字符都属于掩码中的字符(掩码字符可任意排列、重复使用)
- 掩码中的每一个字符,都至少在这个子串里出现过一次
测试用例及预期结果
$tests = [ ['word' => 'example', 'mask' => 'lmp'], // 结果:true(对应子串mpl) ['word' => 'goodness', 'mask' => 'dns'], // 结果:false(找不到同时包含d、n、s的合规连续子串) ['word' => 'slippers', 'mask' => 'eip'], // 结果:true(对应子串ippe) ['word' => 'slippers', 'mask' => 'ips'], // 结果:false(找不到同时包含i、p、s的合规连续子串) ['word' => 'google', 'mask' => 'go'], // 结果:true(对应子串goog) ['word' => 'food', 'mask' => 'go'], // 结果:false(子串oo不含g) ['word' => 'bananas', 'mask' => 'ans'], // 结果:true(对应子串ananas) ['word' => 'candle', 'mask' => 'ace'], // 结果:false(找不到同时包含a、c、e的合规连续子串) ['word' => 'mississippi', 'mask' => 'i'], // 结果:true(对应子串i) ['word' => 'executive', 'mask' => 'ecitx'], // 结果:false(找不到同时包含e、c、i、t、x的合规连续子串) ];
补充说明
Stack Overflow上有不少不同语言的类似问题,但它们的规则组合和本场景不同,且大多不是针对PHP环境的解决方案。
这个问题是对另一用户提出的一个有趣但不完整的问题的补充完善,原问题已被关闭、弃用并由Roomba删除。我自行补充了细节以明确任务范围,还新增了一组测试用例。
内容的提问来源于stack exchange,提问作者mickmackusa
相关产品推荐
相关产品推荐

