ruby程序来验证string2,每个字符都存在于string1中

im9ewurl  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(254)

我尝试使用ruby程序验证string2,每个字符都存在于string1中。如果存在,则将字符存储在变量中,并继续追加并打印带有最终值的变量。
我的代码是:

string1 = "Print eng formats"
string2 = 'recursive'
for i in 0..string2.length do
  for j in 0..string1.length do
    if string2[i]==string1[j]
      print string2[i]
    end
  end
end

但我得到了一个输出“rrerrsie”。请帮我解决这个问题。提前谢谢

yhxst69z

yhxst69z1#

在比较时,您没有打破循环。这个 r 两次包含在字符串中,因此代码输出 r 两次。
此外,还比较了 string1 一字不差 string2 不是很有表现力。字符串越长,此算法的速度就越慢。我建议使用 Set 它不存储重复项,并且允许在 O(1) 对于这样的问题:

string1 = "Print eng formats"
string2 = "recursive"

# create Set for lookup

require "set"
chars = Set.new(string1.chars)

# iterate the second string and output chars that are included

string2.chars.each { |char| print(char) if chars.include?(char) }

# => rersie

相关问题