
题目描述
给你一个包含小时数和分钟数的时间,让你求出从当前开始到达最早的回文时间需要经过多少分钟 我们将分钟数直接拼接到小时数后面,如果这个数字正反都是一样的,那么称这个时间为回文时间,例如13:31就是一个回文时间,因为拼接得到的数字1331正反都是一样的。
输入描述
在一行上输入五个字符代表一个时间,除了中间字符为冒号外,其余字符都是数字,格式形如hh:mm,其中hh表示时,mm表示分。
如13:15,表示13点15分。
时间采取24小时制,保证时间均为合法时间
输出描述
每组输出占一行,包含一个整数,表示答案
示例1
plaintext
输入:
13:29
输出:
2
说明:
2分钟后13:31是最接近的回文时间,因此返回2
Python
此代码未进行大量数据的测试,仅供参考
python
from itertools import count
def next_palindrome_time(time_str):
# 解析输入时间
h, m = map(int, time_str.split(':'))
# 遍历寻找最早的回文时间
for gap in count(0): # gap 代表经过的分钟数,从0开始递增
new_m = (m + gap) % 60 # 计算新的分钟
new_h = (h + (m + gap) // 60) % 24 # 计算新的小时(24小时制)
# 格式化时间
time = f"{new_h:02d}:{new_m:02d}"
# 判断是否为回文时间
if time == time[::-1]:
return gap # 输出所需的分钟数
# 示例输入
time_input = input().strip()
print(next_palindrome_time(time_input))
题目类型
本题属于模拟+字符串处理 类型的算法题。其核心思想是遍历时间,并判断当前时间是否为回文时间,直到找到最早的回文时间为止。
解题思路
- 解析输入 :输入的时间格式为
hh:mm
,需要将小时和分钟拆分出来。- 遍历时间:从当前时间开始,每次增加一分钟,并更新小时和分钟。
- 格式化时间 :将小时和分钟转换为
"hh:mm"
格式的字符串,并判断该字符串是否为回文(正反读都相同)。- 返回结果:当找到第一个回文时间时,输出所经过的分钟数。
整理题解不易, 如果有帮助到您,请给点个赞 ❤️ 和收藏 ⭐,让更多的人看到。🙏🙏🙏