ruby - 检查一个字符串是否包含 Ruby 中另一个字符串的所有字符

标签 ruby string

假设我有一个字符串,例如 string= "aasmflathesorcerersnstonedksaottersapldrrysaahf"。如果您没有注意到,您可以在其中找到短语 "harry potter and the sorcerers stone"(减去空格)。

我需要检查 string 是否包含字符串的所有元素。

string.include? ("sorcerer") #=> true
string.include? ("harrypotterandtheasorcerersstone") #=> false, even though it contains all the letters to spell harrypotterandthesorcerersstone

Include 不适用于打乱的字符串。

如何检查一个字符串是否包含另一个字符串的所有元素?

最佳答案

集合和数组交集不考虑重复的字符,但是 histogram / frequency counter做:

require 'facets'

s1 = "aasmflathesorcerersnstonedksaottersapldrrysaahf"
s2 = "harrypotterandtheasorcerersstone"
freq1 = s1.chars.frequency
freq2 = s2.chars.frequency
freq2.all? { |char2, count2| freq1[char2] >= count2 } 
#=> true

如果您不想依赖方面,请编写您自己的Array#frequency

class Array
  def frequency
    Hash.new(0).tap { |counts| each { |v| counts[v] += 1 } }
  end
end

关于ruby - 检查一个字符串是否包含 Ruby 中另一个字符串的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39212786/

相关文章:

ruby - 我该如何处理规范化?

ruby - Rspec 的 `should_receive` 是否有侵入性较小的替代方案?

java - 在Java中,byte[]与string作为方法参数有什么优缺点?

c - 当 scanf ("%s",s) 时会发生什么?遇到两个或多个词而只提供一个变量?

ruby-on-rails - 制作一个 form_for 将数据添加到现有模型(rails)

ruby - 从单例类中检索 Ruby 对象?

ruby - ruby 的累积加权平均值

javascript - indexOf ("-") 每次返回 - 1

string - 为什么此 switch 语句不能与来自控制台的输入进行任何匹配?

c++ - 如何修复编译错误 "This function or variable may be unsafe"(strcpy)