我有一个JSON对象,其数组为" employee"表示每个员工的登录和注销时间的对象。我试图在Swift中编写一个函数来向我显示没有员工登录的时间(即空闲或间隙时间)。此外,这个商店有一个开放/关闭时间,所以我有人们可能登录的上限和下限。
我坚持从哪里开始,所以任何帮助将不胜感激。我已经浏览了许多众所周知的算法,但似乎找不到任何东西。非常感谢你的帮助!
答案 0 :(得分:0)
一般的想法非常简单。我假设您可以确定没有人登录的起始位置,并且您的输入数据按升序时间排序。
构建一个空字典,以登录名为键。然后开始阅读日志。登录后,将该登录名添加到字典中。当您注销时,将该登录名删除到字典中。每当您为空字典添加名称时,您就结束了空闲时段。每当删除名称导致字典为空时,就会启动一个空闲时段。
伪代码是:
names = empty dictionary
while not end of log
if login-type is login
if names contains login-name
// error: already logged in
if names.count == 0
// end of an idle period
idle-end = login-time
names.add(login-name)
else if login-type is logout
if names does not contain login-name
// error: logout without login
names.remove(login-name)
if names.count == 0
// beginning of an idle period
idle-start = login-time
end while
在每个打开期间结束时,您需要一些额外的逻辑来清空字典,并允许提前登录(在正式打开之前)。但是上面的基本思想应该会给你一个良好的开端。