如何用Python找出列表中多整数元素的起始连续匹配位数
找出整数列表的最长公共前缀位数
实现思路
- 把所有整数转换成字符串,方便逐位对比字符
- 以第一个元素的长度为最大遍历范围,从第一位开始检查所有元素在该位置的字符是否一致
- 一旦遇到某一位有元素不匹配,或者某个元素长度不够到该位,就返回当前已匹配的位数;如果所有位都完全匹配,就返回基准元素的长度
代码实现
def longest_common_prefix_digit_count(numbers): if not numbers: return 0 # 将所有整数转为字符串 str_numbers = list(map(str, numbers)) base_str = str_numbers[0] match_count = 0 for idx in range(len(base_str)): current_char = base_str[idx] # 检查其余所有数字的对应位置字符 for num_str in str_numbers[1:]: # 若当前数字长度不足,或字符不匹配,直接返回已匹配位数 if idx >= len(num_str) or num_str[idx] != current_char: return match_count match_count += 1 # 所有位都匹配的情况 return match_count
测试示例
- 示例1:
print(longest_common_prefix_digit_count([123456789, 123467890, 123489012])) # 输出:4
- 示例2:
print(longest_common_prefix_digit_count([123456789, 123467890, 123489012, 123589000])) # 输出:3
边界情况处理
- 输入空列表:返回
0 - 输入单个整数:返回该整数的位数,比如
longest_common_prefix_digit_count([1234])返回4 - 输入长度不一致的整数:比如
[1234, 12],返回2(前两位均为12)
内容的提问来源于stack exchange,提问作者user2788201
相关产品推荐
相关产品推荐

