小c的整数操作挑战
问题描述
小C手中有一个正整数 n,她每次可以删除这个整数中的一位数字。小C想知道,自己最少需要操作多少次才能使得这个整数成为 5 的倍数。
测试样例
样例1:
输入:
n = 52
输出:1
样例2:
输入:
n = 132
输出:3
样例3:
输入:
n = 1234
输出:4
解题思路
- 转换为字符串:将整数
n转换为字符串,这样我们可以方便地处理每一位数字。 - 遍历字符串:从字符串的末尾开始遍历,检查每一位数字是否为 '0' 或 '5'。
- 计算删除次数:如果找到 '0' 或 '5',则计算从该位置到字符串末尾的删除次数。
- 返回最小删除次数:在所有可能的删除次数中,返回最小的那个。
代码实现
def solution(n: int) -> int: # 将整数转换为字符串 str_n = str(n)
# 初始化最小删除次数为一个较大的值
min_deletions = float('inf')
# 遍历字符串的每一位
for i in range(len(str_n)):
# 如果当前位是 '0' 或 '5'
if str_n[i] == '0' or str_n[i] == '5':
# 计算从当前位到字符串末尾的删除次数
deletions = len(str_n) - i - 1
# 更新最小删除次数
min_deletions = min(min_deletions, deletions)
# 如果没有找到 '0' 或 '5',则返回字符串长度(即删除所有位)
if min_deletions == float('inf'):
return len(str_n)
return min_deletions
if name == 'main': print(solution(52) == 1) print(solution(132) == 3) print(solution(1234) == 4)
- 知识总结:
功能:
这段代码定义了一个名为 solution 的函数,用于计算给定整数转换为字符串后,从包含 '0' 或 '5' 的位置到字符串末尾的最小删除次数。如果字符串中没有 '0' 或 '5' ,则返回字符串的长度。
数据处理:
- 将整数转换为字符串,以便逐位处理。
- 初始化最小删除次数为一个较大的值,通过遍历字符串更新。
算法步骤:
- 遍历字符串的每一位。
- 当遇到
'0'或'5'时,计算从当前位到字符串末尾的删除次数,并更新最小删除次数。 - 若未找到
'0'或'5',返回字符串长度。
测试样例:
在 if __name__ == '__main__': 部分,给出了三个测试样例,分别对输入 52、132 和 1234 进行函数调用,并验证返回结果是否符合预期。
- 学习计划:
一、明确学习目标
短期目标:
- 熟练掌握这段代码的逻辑和功能。
- 能够清晰解释每一行代码的作用。
长期目标:
- 能够灵活运用类似的思路解决其他相关的数字处理问题。
二、合理安排学习时间
每周安排三次学习时间,每次 30 分钟。
第一次:理解代码的整体结构和功能。 第二次:通过修改输入值,深入理解不同情况下代码的输出结果。 第三次:尝试自己编写类似功能的代码,巩固所学知识。
三、利用资源
参考相关的编程教材和在线教程,加深对数字处理和算法的理解。
四、定期自我评估
每两周对自己的学习进度进行一次评估,检查是否达到了短期目标,并根据评估结果调整学习计划。
- 工具运用:
豆包 MarsCode 是一款创新的编程工具,具有以下特点:
- 可视化编程接口:用户能通过拖拽组件构建应用程序,提高开发速度,降低学习门槛,增强初学者信心与兴趣。
- 丰富组件库:为常见功能提供现成解决方案,简化开发流程。
- 强大合作功能:开发团队可通过云端共享项目,实现实时协作,提升沟通效率,减少误解与重复劳动。
使用 MarsCode 也需注意,可能导致部分开发者忽视编程基础知识,因此开发者应在使用的同时保持对编程语言和计算机科学原理的学习。