豆包MarsCode AI 越刷越牛逼,题目:一个整数如果由相同的数字构成,则称为完美整数。例如: 1、11、333 是完美整数。 12、19、101 是不完美整数。 现在,你需要计算给定区间 [x, y] 中有多少个整数是完美整数。
要解决这个问题,我们需要检查区间 ([x, y]) 中的每个整数是否是“完美整数”。一个完美整数的定义是:所有数字都相同。
思路
-
完美整数的判断:对于给定的整数,我们可以将其转为字符串,并检查该字符串的所有字符是否相同。即,如果整数
num转换为字符串后的结果str(num)中所有字符相同,则num是一个完美整数。 -
区间遍历:遍历从
x到y的每个整数,并对每个整数进行完美整数的判断。如果是完美整数,则计数+1。 -
优化判断:对于一个整数
num,如果它是完美整数,那么它的所有字符相同,比如11,22,333等等。我们可以直接检查str(num).count(str(num)[0]) == len(str(num))来判断所有字符是否相同。
代码实现
def solution(x, y):
count = 0
for num in range(x, y + 1):
str_num = str(num)
# 检查是否所有字符都相同
if str_num.count(str_num[0]) == len(str_num):
count += 1
return count
if __name__ == "__main__":
# 测试用例
print(solution(1, 10) == 9) # 1, 2, 3, ..., 9 是完美整数,10不是
print(solution(2, 22) == 10) # 2, 3, ..., 9, 11, 22 是完美整数
代码解析
- 循环遍历区间:
for num in range(x, y + 1),遍历从x到y的所有整数。 - 完美整数判断:对每个整数
num,将其转为字符串str_num。如果str_num.count(str_num[0]) == len(str_num)为真,则说明所有字符都相同,即num是完美整数。 - 计数:对符合条件的数字增加计数
count。
复杂度分析
- 时间复杂度:(O(n \cdot d)),其中 (n) 是区间长度 ((y - x + 1)),(d) 是数字的位数。每个数字最多需要检查其每一位是否相同。
- 空间复杂度:(O(1)),只需要存储计数器变量。
测试案例
- 输入:
x = 1, y = 10,输出:9,因为从1到9这 9 个数都是完美整数。 - 输入:
x = 2, y = 22,输出:10,因为从2到9的数字以及11和22是完美整数。
MarsCode AI刷题的亮点
精选真题: MarsCode AI提供了大量的精选真题,这些题目来源于各大知名面试公司和编程竞赛。这种高质量的题目不仅涵盖了广泛的算法和数据结构知识,而且还能够帮助用户提前适应面试中的真实场景,提升解决问题的能力。
学习的重要性与独特价值
- 个性化题目推荐:平台根据用户的水平和进度,推荐适合的题目,确保每位用户都能在合适的挑战中成长。
- 云端编辑器:提供便捷的在线编程环境,用户可以随时随地进行练习,无需安装任何软件,增强了学习的灵活性。