import pprint def get_max_date(user_id, login_date): """基于双指针的算法实现用户连续登录天数""" n = len(login_date) if len(login_date) == 1: return 1 max_day = 0 cur_day = 1 for i in range(n - 1): d1 = datetime.strptime(login_date[i], "%Y-%m-%d") d2 = datetime.strptime(login_date[i + 1], "%Y-%m-%d") if (d2 - d1).days == 1: cur_day += 1 elif (d2 - d1).days > 1: cur_day = 0 max_day = max(cur_day, max_day) return max_day # 1. 读取数据信息 from datetime import datetime users = {} # 字典存储用户信息, {user_id:login_date} with open('C:\\Users\\Administrator\\Desktop\\用户连续登录天数\\用户连续登录天数\\user_login.txt') as f: for line in f: user_id, login_date = line.strip().split('\t') login_date = login_date.strip("'") if user_id not in users: users[user_id] = [login_date] else: users[user_id].append(login_date) pprint.pprint(users) # 2. 加载数据信息 for user_id, login_date in users.items(): max_day = get_max_date(user_id, login_date) print("%s的最长连续登录天数为%s" % (user_id, max_day))