我正在尝试创建一个方法sort_by_letter
,它接受两个字符串参数,并按照它们在第二个字符串中出现的顺序对每个字母进行排序。
x = "cat"
y = "kndttayc"
sort_by_letter(x, y)
#=> "tac"
答案 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的回答和答案分别是正确的。