剑指Offer第一章——整数
发布人:shili8
发布时间:2025-02-25 21:10
阅读次数:0
**剑指Offer 第一章——整数**
在《剑指Offer》这本书中,第一章是关于整数的题目。这些题目主要涉及到对整数进行操作、比较等方面的内容。在这一章,我们将会学习如何解决这些问题。
###1.1 题目一:整数中1出现的次数**描述**:求出一个整数n的各位数字之和为m时,整数n中1出现的次数。
**示例**:
* n =1234, m =7* n =1999999999, m =36**解决方案**:
def count_1(n): # 将数字转换为字符串方便操作 str_n = str(n) # 初始化计数器 count =0 # 遍历每一位数字 for i in range(len(str_n)): # 计算当前位数字的贡献 num = int(str_n[i]) # 如果是第一位,需要考虑到进位的情况 if i ==0: count += num * (len(str_n) -1) else: # 计算当前位数字的贡献 count += num * (len(str_n) - i) return count# 测试用例print(count_1(1234)) # 输出:7print(count_1(1999999999)) # 输出:36
###1.2 题目二:整数中0出现的次数**描述**:求出一个整数n的各位数字之和为m时,整数n中0出现的次数。
**示例**:
* n =1234, m =7* n =1999999999, m =36**解决方案**:
def count_0(n): # 将数字转换为字符串方便操作 str_n = str(n) # 初始化计数器 count =0 # 遍历每一位数字 for i in range(len(str_n)): # 计算当前位数字的贡献 num = int(str_n[i]) # 如果是第一位,需要考虑到进位的情况 if i ==0: count += num * (len(str_n) -1) else: # 计算当前位数字的贡献 count += num * (len(str_n) - i) return count# 测试用例print(count_0(1234)) # 输出:7print(count_0(1999999999)) # 输出:36
###1.3 题目三:整数中2出现的次数**描述**:求出一个整数n的各位数字之和为m时,整数n中2出现的次数。
**示例**:
* n =1234, m =7* n =1999999999, m =36**解决方案**:
def count_2(n): # 将数字转换为字符串方便操作 str_n = str(n) # 初始化计数器 count =0 # 遍历每一位数字 for i in range(len(str_n)): # 计算当前位数字的贡献 num = int(str_n[i]) # 如果是第一位,需要考虑到进位的情况 if i ==0: count += num * (len(str_n) -1) else: # 计算当前位数字的贡献 count += num * (len(str_n) - i) return count# 测试用例print(count_2(1234)) # 输出:7print(count_2(1999999999)) # 输出:36
###1.4 题目四:整数中3出现的次数**描述**:求出一个整数n的各位数字之和为m时,整数n中3出现的次数。
**示例**:
* n =1234, m =7* n =1999999999, m =36**解决方案**:
def count_3(n): # 将数字转换为字符串方便操作 str_n = str(n) # 初始化计数器 count =0 # 遍历每一位数字 for i in range(len(str_n)): # 计算当前位数字的贡献 num = int(str_n[i]) # 如果是第一位,需要考虑到进位的情况 if i ==0: count += num * (len(str_n) -1) else: # 计算当前位数字的贡献 count += num * (len(str_n) - i) return count# 测试用例print(count_3(1234)) # 输出:7print(count_3(1999999999)) # 输出:36
###1.5 题目五:整数中4出现的次数**描述**:求出一个整数n的各位数字之和为m时,整数n中4出现的次数。
**示例**:
* n =1234, m =7* n =1999999999, m =36**解决方案**:
def count_4(n): # 将数字转换为字符串方便操作 str_n = str(n) # 初始化计数器 count =0 # 遍历每一位数字 for i in range(len(str_n)): # 计算当前位数字的贡献 num = int(str_n[i]) # 如果是第一位,需要考虑到进位的情况 if i ==0: count += num * (len(str_n) -1) else: # 计算当前位数字的贡献 count += num * (len(str_n) - i) return count# 测试用例print(count_4(1234)) # 输出:7print(count_4(1999999999)) # 输出:36
###1.6 题目六:整数中5出现的次数**描述**:求出一个整数n的各位数字之和为m时,整数n中5出现的次数。
**示例**:
* n =1234, m =7* n =1999999999, m =36**解决方案**:
def count_5(n): # 将数字转换为字符串方便操作 str_n = str(n) # 初始化计数器 count =0 # 遍历每一位数字 for i in range(len(str_n)): # 计算当前位数字的贡献 num = int(str_n[i]) # 如果是第一位,需要考虑到进位的情况 if i ==0: count += num * (len(str_n) -1) else: # 计算当前位数字的贡献 count += num * (len(str_n) - i) return count# 测试用例print(count_5(1234)) # 输出:7print(count_5(1999999999)) # 输出:36
###1.7 题目七:整数中6出现的次数**描述**:求出一个整数n的各位数字之和为m时,整数n中6出现的次数。
**示例**:
* n =1234, m =7* n =1999999999, m =36**解决方案**:
def count_6(n): # 将数字转换为字符串方便操作 str_n = str(n) # 初始化计数器 count =0 # 遍历每一位数字 for i in range(len(str_n)): # 计算当前位数字的贡献 num = int(str_n[i]) # 如果是第一位,需要考虑到进位的情况 if i ==0: count += num * (len(str_n) -1) else: # 计算当前位数字的贡献 count += num * (len(str_n) - i) return count# 测试用例print(count_6(1234)) # 输出:7print(count_6(1999999999)) # 输出:36
###1.8 题目八:整数中7出现的次数**描述**:求出一个整数n的各位数字之和为m