高,;字符串中的低位数字(Ruby)

高,;字符串中的低位数字(Ruby),ruby,Ruby,晚上好, 我试图解决一个关于代码战的问题: 在这个小作业中,您将得到一个以空格分隔的数字字符串,并且必须返回最高和最低的数字 例如: 注: 所有数字都是有效的Int32,无需验证。 输入字符串中始终至少有一个数字。 输出字符串必须是由单个空格分隔的两个数字,最大的数字是第一个 我提出了以下解决方案,但是我无法理解为什么该方法只返回“542”而不返回“-214 542”。我还尝试了使用#at、#shift和#pop,得到了相同的结果 我有什么遗漏吗?我希望有人能给我指出正确的方向。我想了解为什么会

晚上好,

我试图解决一个关于代码战的问题:

在这个小作业中,您将得到一个以空格分隔的数字字符串,并且必须返回最高和最低的数字

例如:

注:

所有数字都是有效的Int32,无需验证。 输入字符串中始终至少有一个数字。 输出字符串必须是由单个空格分隔的两个数字,最大的数字是第一个

我提出了以下解决方案,但是我无法理解为什么该方法只返回“542”而不返回“-214 542”。我还尝试了使用#at、#shift和#pop,得到了相同的结果

我有什么遗漏吗?我希望有人能给我指出正确的方向。我想了解为什么会发生这种情况

def high_and_low(numbers)
    numberArray = numbers.split(/\s/).map(&:to_i).sort
    numberArray[-1]
    numberArray[0]
end

high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")
编辑

我也尝试了这个,但收到了一个失败的测试“Nil”:


对于大型阵列,使用sort效率很低。相反,请使用:

或者,如果希望结果保留字符串,请使用:

numbers.split.minmax_by(&:to_i)
# => ["-214", "542"]

当省略
return
语句时,函数将只返回其主体中最后一个表达式的结果。要以数组写入的形式返回这两个值,请执行以下操作:

def high_and_low(numbers)
    numberArray = numbers.split(/\s/).map(&:to_i).sort
    return numberArray[0], numberArray[-1]
end

puts high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")
# => [-214, 542]

这很有帮助。非常感谢。谢谢你,卡里!我编辑了这个问题。致以最诚挚的问候。要将结果以您现在指定的形式显示,您只需将
join(“”)
添加到@Yu的第二个建议中:
numbers.split.minmax_by(&:To_i).join(“”)#=>“-214542”
,尽管我认为将其作为数组保留可能更有用。
numbers.split.map(&:to_i).minmax
# => [-214, 542]
numbers.split.minmax_by(&:to_i)
# => ["-214", "542"]
def high_and_low(numbers)
    numberArray = numbers.split(/\s/).map(&:to_i).sort
    return numberArray[0], numberArray[-1]
end

puts high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")
# => [-214, 542]