检查Ruby中两个字符串内的字符是否相同

我在Ruby中有两个字符串ab

 a="scar" b="cars" 

Ruby中最容易找到ab是否包含相同字符的方法是什么?

UPDATE
我正在建造一个Anagram游戏,因此疤痕是汽车的一个字谜。所以我想要一种方法来比较a和b并得出结论它是一个字谜
所以c="carcass"不应该是匹配的

你可以这样做:

 a = 'scar' b = 'cars' a.chars.sort == b.chars.sort # => true a = 'cars' b = 'carcass' a.chars.sort == b.chars.sort # => false 

仅用于测试数组vs字符串vs删除比较。 假设我们比较长度相等的字符串。

在真正的字谜搜索中,您需要将第一个单词排序一次。 然后将它与一堆b进行比较。

 a="scar" b="cars" require 'benchmark' n = 1000000 Benchmark.bm do |x| x.report('string') { a = a.chars.sort.join; n.times do ; a == b.chars.sort.join ; end } x.report('arrays') { a = a.chars.sort; n.times do ; a == b.chars.sort ; end } end 

结果:

  user system total real string 6.030000 0.010000 6.040000 ( 6.061088) arrays 6.420000 0.010000 6.430000 ( 6.473158) 

但是,如果你每次排序(对于delete我们不需要对任何单词进行排序):

 x.report('string') { n.times do ; a.chars.sort.join == b.chars.sort.join ; end } x.report('arrays') { n.times do ; a.chars.sort == b.chars.sort ; end } x.report('delete') { n.times do ; a.delete(b).empty? ; end } 

结果是:

  user system total real string 11.800000 0.020000 11.820000 ( 11.989071) arrays 11.210000 0.020000 11.230000 ( 11.263627) delete 1.680000 0.000000 1.680000 ( 1.673979) 

Ruby中最容易找到a和b是否包含相同字符的方法是什么?

根据Anagram的定义,下面编写的代码应该有效:

 a="scar" b="cars" a.size == b.size && a.delete(b).empty? 

要求'设置'
 Set.new(a.chars)== Set.new(b.chars)

更新以考虑sawa的评论