【发布时间】:2016-01-31 13:07:03
【问题描述】:
对于一些只有 1 和 0 的随机长度数组,我需要使其开始和结束始终分别为 001 和 100。
为了便于阅读,一些字符串形式的例子
"11010" => "00110100"
"01010" => "0010100"
"10000" => "00100"
"01100" => "001100"
"11111" => "001111100"
"00100" => "00100"
"00010" => "00100"
"00000" => "" # cases with no 1's are ignored
我想出的代码只是 shift/unshift push/pops 使用 until
def norm(arr)
(arr.index(1) > 2 ? arr.shift : arr.unshift(0)) until arr.index(1) == 2
(arr.rindex(1) > arr.length-3 ? arr.push(0) : arr.pop) until arr.rindex(1) == arr.length-3
arr
end
有没有更好(有点?)的方法来处理填充、切片等?
【问题讨论】:
-
我建议在选择答案之前等待超过 27 分钟。通常,最好的答案需要一段时间来研究和开发。
-
你不觉得选择答案有点早吗?我正在修改我的,@theTinMan 刚刚发布了一个,其他人很可能也在寻找答案。
-
不清楚“只有 1 和 0 的数组”是什么意思,但随后显示字符串。您的代码也暗示您传入数组,但差异令人困惑。请编辑您的问题,说明这一点。
-
我应该将示例格式化为数组吗?
[1,1,0,0,1,0] => [0,0,1,1,0,0,1,0,0]会比110010 => 001100100更清楚 -
您必须不在中途大幅更改您的问题,因为这会使 cmets 和答案变得令人费解且毫无意义,甚至可能导致完美的答案被否决。此外,由于整数
001与1相同,因此切换到“整数”会变得更糟,这使问题变得无稽之谈。您应该编辑并将您的问题“回滚”到字符串。是的,您是 SO 新手,但您不认为在发布问题之前应该进行一些调查吗? Here 是一个开始的地方。
标签: arrays ruby string padding slice