计算字符在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

Integer#digitsArray#count

现在只需要对数组中所有元素的这些计数求和。让a表示一系列自然数。

def digit_in_array_count(a, digit)
  a.sum { |n| digit_in_number_count(n, digit) }
end

Array#sum

这是一个例子。

a = [123425, 622252, 136407]
digit = 2

digit_in_number_count(123425, digit)
  #=> 2
digit_in_array_count(a, digit)
  #=> 6

Integer#digitsArray#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#reducea.k.a. inject)和String#count

另一答案

我正在编写一个方法,需要检查数组中给定字符的每个元素,并返回字符在数组元素中完全出现的次数。

假设你有一个字符串数组,那么你可以使用sumcount

['hello','one','two'].sum { |s| s.count('o') }
另一答案

对于一组数字,您可以这样做:

squarenumbers.sum {|e| e.to_a.count(d)}

如果d是数字,您可能希望将其更改为d.to_s

以上是关于计算字符在Ruby中的字符串数组中出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

JAVA经典题--计算一个字符串中每个字符出现的次数

使用HashMap计算一个字符串中每个字符出现的次数

使用HashMap计算一个字符串中每个字符出现的次数

C语言 怎么计算数组中每一个不同元素出现的次数

递归计算字符串中的字符出现次数

计算多个子字符串一次出现在字符串中的次数