Lua中如何检查表格中是否有三个相同的元素(查找三个L)?

你怎么检查一个表格是否有三个相同的元素(查找三个L)?

 table = {nil, nil, L, nil, L} -> false
table = {L,L,无,无,L} -> true

真的很感激您的帮助!

EDIT:好了,我得到了这个,但即使有三个或更多的L's,它只输出false(并为每个检查执行5次?)。如果看起来像我试图获得它的代码,那我很抱歉,我真的想学习!:)

for k, v in pairs( threeL_table ) do
local count = 0
  if k == 'L' then
    count = count + 1
  end
  if count == 3 then
    print('true')
  else
    print('false')
  end
end
点赞
用户2858170
用户2858170

我不会给你任何代码, 因为你没有展示任何自己解决问题的努力。

如果要检查一个表格是否有三个相同的元素, 你可以数一下。

遍历表格, 对于每个不同的值, 创建一个新计数器。你可以使用另一个表格来储存这些计数器。一旦其中任何一个计数器达到了3, 你就知道有三个相同的值了。

2017-01-12 21:27:22
用户4211279
用户4211279

你已经接近成功了。你需要测试值v与字符串'L'是否匹配,而不是键k。另外,我猜你想在扫描完成后只打印一次消息;如果是这样,请将if语句放在for循环外面。(在这种情况下,你也应该在for循环外定义count,否则在结束后它就看不到了)。

local count = 0
for k, v in pairs(threeL_table) do
  if v == 'L' then -- 你需要检查值是否匹配,而不是键
    count = count + 1
  end
end

if count == 3 then -- 将if语句移动到for循环之外
  print('true')
else
  print('false')
end
2017-01-12 22:50:57
用户1413481
用户1413481

另一种解决方法:

function detectDup(t,nDup)
  table.sort(t)
  local tabCount = {}
  for _,e in ipairs(t) do
    tabCount[e] = (tabCount[e] or 0) + 1
    if tabCount[e] >= 3 then
      print("元素 ' .. e .. ' 重复次数超过 3 次!")
      return true
    end
  end
  return false
end

print(detectDup({'L', 'L','A','B'},3))
print(detectDup({'L', 'L','A','B','L',},3))
2017-01-14 18:28:36