如何按字符串y中出现的顺序对字符串x进行排序?

时间:2018-06-14 02:49:01

标签: ruby

我正在尝试创建一个方法sort_by_letter,它接受​​两个字符串参数,并按照它们在第二个字符串中出现的顺序对每个字母进行排序。

x = "cat"
y = "kndttayc"

sort_by_letter(x, y) 
  #=> "tac" 

2 个答案:

答案 0 :(得分:4)

试试这个

x.each_char.sort_by { |str| y.index str }.join

答案 1 :(得分:3)

Subush的答案很简单,并且工作正常,但如果字符串变长,并且您想关注效率,您可能也想要这样做:

h = y.each_char.with_index.to_h
#=> {"k"=>0, "n"=>1, "d"=>2, "t"=>4, "a"=>5, "y"=>6, "c"=>7}
x.each_char.sort_by{|c| h[c]}.join
#=> "tac"

注意:请参阅Simple Lime对该问题的评论。关于这一点,Subush的回答和答案分别是正确的。