【发布时间】:2015-04-18 14:26:10
【问题描述】:
我正在尝试解决这个问题:给定一个字符串,要求您根据其他字符串中的字符顺序对其进行排序:
例子:
> sort_string('foos', 'of')
=> 'oofs'
> sort_string('string', 'gnirts')
=> 'gnirts'
> sort_string('banana', 'abn')
=> 'aaabnn'
我尝试了以下实现:
def sort_string(f_string, s_string)
sanitize(s_string)
s_string.chars.each do |e|
f_string.length.times do |n|
if f_string[n] == e
s_string[e], s_string[n] = s_string[n], s_string[e]
end
end
end
end
private
def sanitize(string)
string.chars.uniq.join
end
但它给了我以下错误:
4_AStringOfSorts.rb:6:in `[]=': 没有将 nil 隐式转换为 String (TypeError) 来自 4_AStringOfSorts.rb:6:in `sort_string 中的块(2 级)' 来自 4_AStringOfSorts.rb:4:in `times' 来自 4_AStringOfSorts.rb:4:in `block in sort_string' 来自 4_AStringOfSorts.rb:3:in `each' 来自 4_AStringOfSorts.rb:3:in `sort_string' 来自 4_AStringOfSorts.rb:18:in `'【问题讨论】:
-
我不懂规则。
sort_string('zaefc', 'fa')是否返回efcaz?这里'f'和'a' 在3和1的'zaefc'的偏移量处。这两个字母是否要交换,但保留1和3的位置,以及剩余的字符'z'、'e'和'c',是否按字典顺序排序,但保留在偏移量0、@ 987654335@ 和4? -
@Cary Swoveland, sort_string('zaefc', 'fa') => 'fazec'