【发布时间】:2021-01-25 12:16:43
【问题描述】:
目前只是在寻找一种让这段代码更快的方法。
这个函数目前接受一个字符串s和一个int类型k,并返回s长度k中元音最多的子字符串。
例子:
s = caberqiitefg k = 5输出:
二七erqii是s中元音最多的长度为5的子串。
返回“未找到!”如果字符串中没有元音。
function findSubstring(s, k)
local sub = string.sub
local gsub = string.gsub
local vowels = "[aeiou]"
local empty = ""
local _, numberOfVowels = gsub(s, vowels, empty)
if numberOfVowels == 0 then
return "Not found!"
end
local mostVowels = nil
local vowelnum = 0
for i = 1, #s - k + 1 do
local curr = sub(s, i, k + i - 1)
local _, nvow = gsub(curr, vowels, empty)
if mostVowels == nil or (nvow > vowelnum) then
mostVowels = curr
vowelnum = nvow
end
end
return mostVowels
end
【问题讨论】:
-
编写基准测试并尝试。
-
在 C 中重新实现它不是一种选择吗?