0
点赞
收藏
分享

微信扫一扫

编程题练习@9-5

题目一:

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
举报

相关推荐

0 条评论