def sort(someString) do
countSubstring = fn(_, "") -> 0
(str, sub) -> length(String.split(str, sub)) - 1 end
someMap = %{:a => 0, :b => 0, :c => 0, :d => 0}
def loopMap(aMap, n) when n <= 1 do
timesKeyFound = countSubstring(someString, aMap[n])
Map.put_new(aMap, aMap[key], timesKeyFound)
end
def loopMap(aMap, n) do
timesKeyFound = countSubstring(someString, aMap[n])
Map.put_new(aMap, aMap[key], timesKeyFound)
loopMap(aMap, n - 1)
end
loopMap(someMap, 4) #4 is the number of keys in the map
end
我在这里要做的是将字符串传递给排序模块。例如,让我们传递字符串&#34;嗨,我的名字是bob&#34;。一旦通过,我创建一个带有4个键的地图:&#39; a&#39; &#39; B&#39; &#39; C&#39;并且&#39; d&#39;。 然后在我的loopMap代码中,我试图将我的someMap映射及其键(n)的数量作为参数传递。然后我在字符串中搜索每个键的实例,如果找到了键,我会为找到的每个键更新我的地图。
在我的someMap上运行loopMap后,我应该有一个更新的地图:
%{a: 1, b: 2, c: 0, d: 0}
我做错了什么?
答案 0 :(得分:0)
更简单的解决方案是:
"Hi my name is Bob"
|> String.to_list
|> Enum.reduce(%{a: 0, b: 0}, fn c, acc ->
case Map.get(acc, :'#{c}') do
nil -> acc
n -> Map.put(acc, :'#{c}', n + 1)
end
end)