1
我需要编写一个函数,它接受一个字符串并返回它在Lua中删除重复字符。我需要什么帮助是...在字符串中重复
- 使字母和计数
- 使每个字母等于只有一个散列,删除出现了多次
- 哈希转换到新的字符串复制删除
一个简单的函数/算法将不胜感激!
我需要编写一个函数,它接受一个字符串并返回它在Lua中删除重复字符。我需要什么帮助是...在字符串中重复
一个简单的函数/算法将不胜感激!
如果您只需要每个字符的一个实例,那么您可能不需要跟踪计数;您可以将输入字符串与用于生成输出的同一个表进行比较。
local function contains(tbl, val)
for k,v in pairs(tbl) do
if v == val then return true end
end
return false
end
local function uniq(str)
local out = {}
for s in str:gmatch(".") do
if not contains(out, s) then out[#out+1] = s end
end
return table.concat(out)
end
print(uniq("the quick brown fox jumps over the lazy dog"))
-- the quickbrownfxjmpsvlazydg
这可能比下面的功能短字符串慢,但它通常最好避免过度的字符串连接在Lua,理由概括here。如果你确定输出字符串将是相当短的,你可以摆脱并使用此:
local function uniq(str)
local out = ""
for s in str:gmatch(".") do
if not out:find(s) then out = out .. s end
end
return out
end
我用了较短的,它完美!非常感谢你,我非常感谢你的帮助。完美解决方案 – 2012-07-27 04:59:37