Lua如何判断空格分隔的代码字符串是否匹配表中任意元素
Lua实现空格分隔代码串的匹配判断
实现逻辑
整个判断流程分三步完成:
- 首先将待匹配的代码数组转换为哈希集合结构,把每个待匹配代码作为集合的键,把单元素查找的时间复杂度降到O(1),避免重复遍历匹配表
- 遍历输入的空格分隔字符串,逐段提取非空格的连续字符(也就是单个代码),自动跳过连续空格、首尾空格的干扰
- 每提取到一个代码就去哈希集合中查找,只要存在匹配项立刻返回
true;所有代码遍历完成仍无匹配则返回false
完整实现代码
function checkCodeMatch(codeSequence, targetCodeList) -- 构建匹配用的哈希集合 local codeSet = {} for _, code in ipairs(targetCodeList) do codeSet[code] = true end -- 逐段提取字符串中的非空格代码片段 for singleCode in string.gmatch(codeSequence, "%S+") do if codeSet[singleCode] then return true end end return false end
调用示例
对应给出的测试场景:
local inputStr = "O R LE Pdc" local targetTable = {"R", "BE", "Cre"} local result = checkCodeMatch(inputStr, targetTable) print(result) -- 输出 true,符合预期
实现说明
- 字符串拆分使用
string.gmatch配合模式%S+,相比手动按空格分割的写法,能自动处理多空格、首尾带空格的异常输入场景,不会产生空的无效代码片段 - 哈希集合的预处理方式在匹配表元素较多、输入字符串较长的场景下性能远高于双层循环遍历的写法,代码扩展性更好
内容的提问来源于stack exchange,提问作者56independent
相关产品推荐
相关产品推荐

