Ruby中如何将大整数拆分为滑动窗口式整数数组
Ruby实现滑动窗口截取连续4位数字数组
要搞定这个需求其实很简单,核心思路就是把整数转成字符串后,用滑动窗口的方式遍历截取片段,再转回整数即可。这里给你两种实用的实现方式:
方法一:用each_cons(最Ruby风格的写法)
num = 293649214912 result = num.to_s.chars.each_cons(4).map { |chars| chars.join.to_i } p result # 输出: [2936, 9364, 3649, 6492, 4921, 9214, 2149, 1491, 4912]
代码拆解:
num.to_s:先把大整数转成字符串,毕竟要处理连续的字符片段.chars:把字符串拆成单个字符的数组,比如"293649214912"会变成["2","9","3","6","4","9","2","1","4","9","1","2"].each_cons(4):Ruby数组的贴心方法,会依次取出数组里连续的4个元素组成子数组,比如第一个子数组是["2","9","3","6"],第二个是["9","3","6","4"],以此类推.map { |chars| chars.join.to_i }:把每个子数组的字符拼接成字符串,再转成整数,最终就得到了你要的目标数组
方法二:手动遍历索引(适合理解底层逻辑)
如果你想一步步掌控遍历过程,也可以通过索引手动实现:
num = 293649214912 str = num.to_s result = [] # 循环范围从0到字符串长度减4,确保每次都能取到完整的4个字符 (0..str.length - 4).each do |i| result << str[i, 4].to_i end p result # 同样输出目标数组
代码拆解:
str[i, 4]:Ruby字符串的截取语法,意思是从索引i开始,取4个字符(0..str.length - 4):这个范围保证了最后一次截取的起始索引不会超出字符串长度,避免出现截取不足4位的情况
两种方法都能完美满足需求,其中each_cons是Ruby处理滑动窗口问题的惯用写法,代码更简洁优雅。
内容的提问来源于stack exchange,提问作者Warden
相关产品推荐
相关产品推荐

