gpt4 book ai didi

ruby - 为什么数组的索引重复打印出来是2?

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:40 26 4
gpt4 key购买 nike

我正在研究这个功能:

它应该接受一个数组并将其与给定的单词匹配,以查看该单词是否可以由给定的字符串数组组成。

我添加了两行注释,因为我想看看 for 循环是如何工作的。

def canformword(arr,word)
arrword = word.chars
arrleft = arr
flag = true
for i in 0...arrword.size
ch = arrword[i]
# puts arrword[i]
if !arrleft.include?(ch)
flag = false
break
else
ind = arrleft.index(ch)
# puts ind
arrleft.delete_at(ind)
end
end
if flag
puts 'can form word'
else
puts 'can not form word'
end
end

canformword(['y','b','z','e','a','u','t'], 'beauty')
canformword(['r','o','u','g','h'], 'tough')

当我取消注释这两行时,输出如下:

为什么输出重复打印出索引 2?我认为它会打印出我的 arrleft 数组中每个字母的索引,而不是重复吐出 2!

我理解它打印出来的 1,因为那是 b 的索引,但其余部分对我来说很奇怪。

b
1
e
2
a
2
u
2
t
2
y
0
can form word
t
can not form word

最佳答案

听到更好的实现

def can_form_word?(chars_array, word)
(word.chars - chars_array).empty?
end

就是这样。

这里是 Ruby 方式的另一种实现方式。因为你的代码就像C。我编写 Ruby 代码已经三年多了,而且我从未使用过 for 循环。

def canformword(chars,word)
word.each_char do |char|
puts char
if !chars.include?(char)
return false # or puts "Can't form word"
end
end
true # or puts "Can form word"
end

关于ruby - 为什么数组的索引重复打印出来是2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41695932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com