您好我正在编写一个方法,需要检查数组中给定字符的每个元素,并返回字符在数组元素中完全出现的次数。
为了创建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加到计数器中。
感谢您的帮助。
答案 0 :(得分:1)
我的回答假设问题如下:&#34;给定一个自然数(非负整数)数组和一个数字d
(整数0-9
),计算总数对于数组的每个元素,数字的位数等于d
,并对数组中所有元素的总数进行求和&#34;。
请注意,此说明不提及完美正方形。这是因为构造自然数组的方式是无关紧要的。
让我们首先构建一个方法,计算给定数字d
出现在自然数n
中的次数。
def digit_in_number_count(n, digit)
n.digits.count(digit)
end
请参阅Integer#digits和Array#count。
现在只需要对数组中所有元素的计数进行求和。设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。
答案 1 :(得分:0)
我正在编写一个需要检查数组中每个元素的方法 给定的字符并返回字符出现的次数 完全在数组的元素中。
假设您有一个字符串数组,那么您可以使用val clusterName: String = "getting-started-with-elastic4s"
val homePath: Path = Files.createTempDirectory(clusterName)
val localNode = LocalNode(clusterName,homePath.toAbsolutePath.toString)
localNode.start()
val client = HttpClient(ElasticsearchClientUri("localhost",9200))
client.execute{
createIndex("trial")
}.await
和sum
。
count
答案 2 :(得分:0)
对于一组数字,你可以这样做:
squarenumbers.sum {|e| e.to_a.count(d)}
如果d
是数字,则您需要将其更改为d.to_s