我有一个开放时间的清单,每天这是类型
Map[String, List[(String, String)]]
Key是星期几,列表元素包含Open_from和open_to。下面是示例
Map(MONDAY -> List( (08:00:00, 12:00:00), (13:00:00, 16:00:00)),
TUESDAY -> List( (09:00:00, 12:00:00), (13:00:00, 16:00:00)),
...
...
)
我必须检查以下条件,以检查是否有重叠的时间
- Open_to应大于Open_from
1.如果一天内list中有超过1个元素(如上面的例子),那么第一个元素的open_to应该小于下一个元素的open_from。
如果Map中有任何重叠的时间,则必须返回true或false。我试着用foldLeft来做,并与列表中的下一个元素进行比较。但是不确定如何返回布尔值。
你能告诉我怎么做吗?谢谢
谢谢
3条答案
按热度按时间kzmpq1sx1#
我认为你走的是正确的路。我在实现中使用了Int而不是times。在可读性方面还有很大的改进空间:
dy2hfwbg2#
你不需要
foldLeft
。类似这样的东西应该可以检查这两个条件:ukdjmx9f3#
这是我的解决方案,我认为其他解决方案缺少的一个重要部分是假设时间块是有序的,这可能不是这样:
下面是一个可运行的scastie:https://scastie.scala-lang.org/Gmia1WsnSqGbbZgTJKWoYw