回文时间 - 携程机试真题题解

题目描述

给你一个包含小时数和分钟数的时间,让你求出从当前开始到达最早的回文时间需要经过多少分钟 我们将分钟数直接拼接到小时数后面,如果这个数字正反都是一样的,那么称这个时间为回文时间,例如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))

题目类型

本题属于模拟+字符串处理 类型的算法题。其核心思想是遍历时间,并判断当前时间是否为回文时间,直到找到最早的回文时间为止。


解题思路

  1. 解析输入 :输入的时间格式为hh:mm,需要将小时和分钟拆分出来。
  2. 遍历时间:从当前时间开始,每次增加一分钟,并更新小时和分钟。
  3. 格式化时间 :将小时和分钟转换为"hh:mm"格式的字符串,并判断该字符串是否为回文(正反读都相同)。
  4. 返回结果:当找到第一个回文时间时,输出所经过的分钟数。
    整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏
相关推荐
m0_570466412 分钟前
代码随想录算法训练营第二十八天 | 买卖股票的最佳实际、跳跃游戏、K次取反后最大化的数组和
java·开发语言·算法
和鲸社区7 分钟前
《斯坦福CS336》作业1开源,从0手搓大模型|代码复现+免环境配置
人工智能·python·深度学习·计算机视觉·语言模型·自然语言处理·nlp
吃着火锅x唱着歌8 分钟前
LeetCode 1537.最大得分
算法·leetcode·职场和发展
数模加油站8 分钟前
25高教社杯数模国赛【C题超高质量思路+可运行代码】第十弹
算法·数学建模·数模国赛·高教社杯全国大学生数学建模竞赛
ulias21222 分钟前
动态规划入门:从记忆化搜索到动态规划
算法·动态规划
山河君23 分钟前
webrtc之语音活动上——VAD能量检测原理以及源码详解
算法·音视频·webrtc·信号处理
豌豆花下猫40 分钟前
Python 潮流周刊#118:Python 异步为何不够流行?(摘要)
后端·python·ai
THMAIL1 小时前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
JuneXcy1 小时前
结构体简介
c语言·数据结构·算法
jiaway1 小时前
【C语言】第四课 指针与内存管理
c语言·开发语言·算法