计算字符在Ruby中的字符串数组中出现的次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算字符在Ruby中的字符串数组中出现的次数相关的知识,希望对你有一定的参考价值。
嗨,我正在编写一个方法,需要检查数组中给定字符的每个元素,并返回字符在数组元素中完全出现的次数。
为了创建squarenumbers
数组,我有这样的代码:
squarenumbers = []
for k in 1..n
squarenumbers << k**2
end
squarenumbers.map { |a| a.to_s }
d.to_s
到目前为止,我已经写了数字:
for k in 0..n-1
count =+1 if squarenumbers[k].include?"d"
end
我创建了一个大小为n
的数组,其中包含来自1 to n
的方形数字,我现在无法计算d
在每个元素中出现的次数。
我将d
转换为方法中的字符串,无法理解为什么计数不起作用。我道歉我是一个初学者,但我想我写的东西会检查数组中每个元素的字符d,并在每次字符串包含它时向计数器添加1。
感谢你的帮助。
我的回答假设问题如下:“给定一个自然数(非负整数)和一个数字d
(整数0-9
)的数组,计算数组的每个元素和总和等于d
的总位数那些总数超过数组的所有元素“。
请注意,此描述未提及完美正方形。那是因为构造自然数组的方式是无关紧要的。
让我们首先构造一个方法来计算给定数字d
出现在自然数n
中的次数。
def digit_in_number_count(n, digit)
n.digits.count(digit)
end
现在只需要对数组中所有元素的这些计数求和。让a
表示一系列自然数。
def digit_in_array_count(a, digit)
a.sum { |n| digit_in_number_count(n, digit) }
end
这是一个例子。
a = [123425, 622252, 136407]
digit = 2
digit_in_number_count(123425, digit)
#=> 2
digit_in_array_count(a, digit)
#=> 6
Integer#digits
和Array#sum
都在Ruby v2.4中首次亮相。要支持早期版本的Ruby,您可以按如下方式修改方法。
def digit_in_number_count(n, digit)
n.to_s.count(digit.to_s)
end
def digit_in_array_count(a, digit)
a.reduce(0) { |t,n| t + digit_in_number_count(n, digit) }
end
见Enumerable#reduce(a.k.a. inject
)和String#count。
我正在编写一个方法,需要检查数组中给定字符的每个元素,并返回字符在数组元素中完全出现的次数。
假设你有一个字符串数组,那么你可以使用sum
和count
。
['hello','one','two'].sum { |s| s.count('o') }
对于一组数字,您可以这样做:
squarenumbers.sum {|e| e.to_a.count(d)}
如果d
是数字,您可能希望将其更改为d.to_s
以上是关于计算字符在Ruby中的字符串数组中出现的次数的主要内容,如果未能解决你的问题,请参考以下文章