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