文字列内で最も頻繁に使用される 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 では、これは次のように Hash を宣言することによって行われます。
counter = Hash.new(0)