新农上路
- 积分
- 99
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2020-4-25
- 最后登录
- 1970-1-1
|
Super simple solution using Python (please add rice if you like it!!!)- def timeIntervals(self, start_str, end_str):
-
- day2int_map = {
- 'mon': 1, 'tue':2, 'wed':3, 'thu':4, 'fri':5, 'sat':6, 'sun':7
- }
-
- start_day, start_time, start_ap = start_str.split(' ')
- end_day, end_time, end_ap = end_str.split(' ')
-
- # process day
- start_day = day2int_map[start_day]
- end_day = day2int_map[end_day]
-
- # process time
- start_hour, start_min = start_time.split(':')
- end_hour, end_min = end_time.split(':')
-
- start_hour = int(start_hour) % 12 if start_ap == 'am' else int(start_hour) % 12 + 12
- end_hour = int(end_hour) % 12 if end_ap == 'am' else int(end_hour) % 12 + 12
-
- start_stamp = start_hour * 60 + int(start_min)
- end_stamp = end_hour * 60 + int(end_min)
-
- # check validity
- if end_day < start_day:
- return []
- if end_day == start_day:
- if end_stamp < start_stamp:
- return []
-
- # round timestamp & add days info
- mins_in_day = 60 * 24
-
- start_stamp = start_stamp / 5 * 5 + start_day * mins_in_day
- end_stamp = end_stamp / 5 * 5 + end_day * mins_in_day
-
- # raw results
- res = list(range(start_stamp, end_stamp + 1, 5))
-
- # result conversion func
- def convert(stamp):
- day_str = str(stamp / mins_in_day)
- rest = stamp % mins_in_day
- hour_str = '{:02d}'.format(rest / 60)
- min_str = '{:02d}'.format(rest % 60)
- return ''join([day_str, hour_str, min_str])
-
- return [convert(i) for i in res]
复制代码 |
|