我需要编写一个程序,该程序在给定一个整数的情况下,查找重复数字的字符串,并将它们作为数组返回.例如,给定1234555567899944,程序需要返回[5555, 999, 44].

以下是我目前掌握的情况:

a = 1234555567899944
arr = a.to_s.split("")
result = []
arr.each_with_index do |x,y| 
  if arr[y] == arr[y+1] || arr[y] == arr[y-1]
    result << x
  end
end
p result.join().split()

有没有更好的办法?

我怎么才能得到[5555, 999, 44]分而不是["555599944"]分呢?

推荐答案

作为练习,我考虑了如何获得所需的结果,而不是将给定的整数转换为字符串,操作该字符串以形成相等字符的字符串数组,然后将后者转换回整数的方法,这种方法可能有争议.

这是一种可以做到的方法.

a = 1234555567899944
buf = nil
arr = []

loop do
  a, digit = a.divmod(10)
  if buf.nil?
    buf = digit
  elsif digit == buf % 10 
    buf = 10*buf + digit
  else
    arr.unshift(buf) if buf > 10
    buf = digit
  end
  break arr if a.zero?
end
  #=> [5555, 999, 44] 

请参见Integer#divmod.

Ruby相关问答推荐

无法解析音频文件 track1.m4a

减少哈希值

将块传递给方法传递给Ruby中的另一个方法

从 Time 对象获取下/上个月

在 Go (golang) 中编写一个 Ruby 扩展

是否有Ruby单行如果 x 则返回?

在 gem 中放置/访问配置文件的位置?

在 YAML 变量中包含 jekyll / liquid 模板数据?

Ruby 中 Postgres 查询的简单示例

将方法应用于数组/可枚举中的每个元素

Ruby 的排序方法使用哪种算法?

将字符串与多个模式匹配

如何自定义 Jekyll 的 url?

Ruby 和您必须使用 OpenSSL 支持重新编译 Ruby 或更改 Gemfile 中的源代码

野外的好黄瓜例子?

在ruby中将字符串转换为十进制数

为什么这个 Ruby 对象同时具有 to_s 和 inspect 似乎做同样事情的方法?

如何使用 Ruby-Rails 删除文件夹的所有内容?

检索/列出 Redis 数据库中的所有键/值对

Ruby:如何计算一个字符串在另一个字符串中出现的次数?