Arrays 按姓氏对字符串排序:Ruby
发现这个编码挑战相当棘手,似乎无法确定应该添加什么方法来显式排序字符串的姓氏 当前解决方案:Arrays 按姓氏对字符串排序:Ruby,arrays,ruby,string,algorithm,sorting,Arrays,Ruby,String,Algorithm,Sorting,发现这个编码挑战相当棘手,似乎无法确定应该添加什么方法来显式排序字符串的姓氏 当前解决方案: def sort_reindeer reindeer_names return sorted_names = reindeer_names.sort_by do |name| name.split(" ").reverse.join end end # issue: Expected: ["Kenjiro Mori", "Susumu
def sort_reindeer reindeer_names
return sorted_names = reindeer_names.sort_by do |name|
name.split(" ").reverse.join
end
end
# issue: Expected: ["Kenjiro Mori", "Susumu Mori", "Akira Mori"]
# => instead got: ["Akira Mori", "Kenjiro Mori", "Susumu Mori"]
结果:
def sort_reindeer reindeer_names
return sorted_names = reindeer_names.sort_by do |name|
name.split(" ").reverse.join
end
end
# issue: Expected: ["Kenjiro Mori", "Susumu Mori", "Akira Mori"]
# => instead got: ["Akira Mori", "Kenjiro Mori", "Susumu Mori"]
看起来我的代码已经看到每个姓氏都是匹配的,并且已经决定映射姓氏并按字母顺序返回它们。如果姓氏匹配,如何阻止代码对姓氏排序?您建议我创建某种类型的三元语句,还是有一个更简单的解决方案。首先,从技术上讲,您不需要显式的
返回
或设置排序的\u名称
局部变量
Ad rem:您可以执行以下操作:name.split(“”).last
,而不必执行name.split(“”).reverse.join(也可以按第一个单词排序)(如果最后一个单词相等),因此它只考虑最后一个单词。结果是:
def sort_reindeer(reinder_names)
reinder_names.sort_by { |name| name.split(' ').last }
end
sort_reindeer(["Kenjiro Mori", "Susumu Mori", "Akira Mori"])
# => ["Kenjiro Mori", "Susumu Mori", "Akira Mori"]
首先,就技术而言,您不需要显式的return
或设置sorted\u name
局部变量
Ad rem:您可以执行以下操作:name.split(“”).last
,而不必执行name.split(“”).reverse.join(也可以按第一个单词排序)(如果最后一个单词相等),因此它只考虑最后一个单词。结果是:
def sort_reindeer(reinder_names)
reinder_names.sort_by { |name| name.split(' ').last }
end
sort_reindeer(["Kenjiro Mori", "Susumu Mori", "Akira Mori"])
# => ["Kenjiro Mori", "Susumu Mori", "Akira Mori"]
导致测试失败的输入是什么?如果姓氏相同,确定排序顺序的规则是什么?排序是否需要稳定?导致测试失败的输入是什么?如果姓氏相同,确定排序顺序的规则是什么?排序是否需要稳定?这适用于某些Ruby实现,但不是所有Ruby实现,因为sort\u by
不能保证稳定。请参阅:…一个变体:reinder_names.sort_by{| name | name[/[^]+\a/]}
。这适用于某些Ruby实现,但不是所有Ruby实现,因为sort_by
不能保证稳定。请参阅:…一个变体:reinder_names.sort_by{| name | name[/[^]+\a/]}
。