Искам да получа най-честия подниз с размер k в низ. За да постигна това, използвам таблица за съхраняване на броя на срещанията за всеки подниз. Ето кода:
function frequentWords(seq, k)
local subs = ""
local counter = {}
for i = 1,(seq:len()-k+1) do
subs = seq:sub(i, i+k-1)
counter[subs] = (counter[subs] and counter[subs] + 1 or 1)
--print(subs .. ": " .. counter[subs])
end
end
Редът counter[subs] = (counter[subs] and counter[subs] + 1 or 1)
има същата средна стойност на counter[subs] = (counter[subs] ? counter[subs]+1 : 1)
. Този ред би бил само counter[subs] = counter[subs] + 1
, ако можехме да зададем всеки нов counter
елемент с 0
. Възможно ли е това в Lua? Ако не, какъв е най-добрият начин да направите нещо подобно?
Например в Ruby това се прави чрез деклариране на хеш по следния начин:
counter = Hash.new(0)