题目一:
size = int(input())
timestamps = []
for _ in range(size):
timestamps.append(input())
def custom_sort(timestamp):
parts = timestamp.split("/")
ts_index = None
for i, part in enumerate(parts):
if "-" in part and "T" in part:
ts_index = i
break
if ts_index is not None:
ts = parts[ts_index]
return (ts, len(timestamp), timestamp)
else:
return (timestamp, len(timestamp), timestamp)
sorted_timestamps = sorted(timestamps, key=custom_sort)
unique_timestamps = []
for ts in sorted_timestamps:
if ts not in unique_timestamps:
unique_timestamps.append(ts)
for ts in unique_timestamps:
print(ts)
1/2018-12-24T08:00:00/test/Test1
abc/2018-12-24T08:00:00/test/you
123/2018-12-24T08:00:09/test/me
my/2019-01-01T09:00:01
题目二:
import collections
# 输入K和字符串str
K = int(input())
str = input()
# 获取字符串的长度
str_length = len(str)
# 初始化结果列表
words = []
# 遍历字符串,切割成所有长度大于等于K的子串
for i in range(str_length):
for j in range(i + K, str_length + 1):
substr = str[i:j]
words.append(substr)
# 创建一个字典来存储单词和它们的出现次数
word_count = collections.defaultdict(int)
# 统计长度大于等于K的单词出现次数
for word in words:
word_count[word] += 1
# 找到出现频率最高的单词
if word_count:
print(min(word_count, key=lambda x: (-word_count[x], len(x), x)))
else:
print(-1)
ab
题目三:
用例:
输入
1
↙ ↘
2 3
输出
25
# 原题是核心代码模式
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def sumNumbers(root):
def dfs(node, current_sum):
if not node:
return 0
# 计算当前路径上的数字之和
current_sum = current_sum * 10 + node.val
# 如果是叶子节点,返回当前路径的数字之和
if not node.left and not node.right:
return current_sum
# 否则,递归计算左子树和右子树的路径数字之和,并相加
return dfs(node.left, current_sum) + dfs(node.right, current_sum)
return dfs(root, 0)
# 创建示例二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
# 计算根节点到叶子节点的所有路径表示的数字之和
result = sumNumbers(root)
print(result)
25