六种对齐均为根据全体卡片的边界(或中心)计算目标线,再只改 x 或只改 y:
left/right/top/bottom:对齐到极值边缘;horizontal_center / vertical_center:先算包围盒中点(向下取整),再令 new = mid - size//2。width、height 不变,卡片顺序不变。
平面左上角为 (0,0),坐标轴向右、向下为正(如下图)。给定矩形列表 cards,cards[i]=[x,y,width,height] 表示左上角 (x,y)、宽 width、高 height。按 alignment 将它们对齐后,按原顺序返回各矩形的新四元组。宽高不变,只改 x 或只改 y。

alignment 只能取下列之一:
top:所有顶边对齐到当前最靠上的顶边bottom:所有底边对齐到当前最靠下的底边left:所有左边对齐到当前最靠左的左边right:所有右边对齐到当前最靠右的右边horizontal_center:水平居中——先取全体最左边界 x1 与最右边界 xr(某矩形右边界为 x+width),令 MiddleX=⌊(x1+xr)/2⌋;再使每个矩形的 ⌊x+width/2⌋ 等于 MiddleXvertical_center:垂直居中——同理对 y 与高度计算 MiddleY 并上下移动图中从左到右示意同一组矩形的原位置、右对齐、水平居中对齐。
cards,1≤cards.length≤100,0≤x,y<1000,1≤width,height≤1000。alignment(上述六种字符串之一)。与 cards 等长、顺序相同的列表,元素为对齐后的 [new_x, new_y, width, height]。
输入:
[[1, 1, 3, 2], [4, 2, 2, 2], [5, 5, 4, 2]]
"right"
输出:
[[6, 1, 3, 2], [7, 2, 2, 2], [5, 5, 4, 2]]
说明:
与图中「右对齐」一致。最右边界为 9,各矩形右边界对齐到 9,得到新 x 为 6,7,5。
输入:
[[1, 1, 3, 2], [4, 2, 2, 2], [5, 5, 4, 2]]
"horizontal_center"
输出:
[[4, 1, 3, 2], [4, 2, 2, 2], [3, 5, 4, 2]]
说明:
与图中「水平居中对齐」一致。MiddleX=⌊(1+9)/2⌋=5,各矩形水平中点对齐到 5。
输入:
[[2, 3, 2, 2], [0, 1, 3, 1], [4, 5, 1, 2]]
"top"
输出:
[[2, 1, 2, 2], [0, 1, 3, 1], [4, 1, 1, 2]]
说明:
最靠上的顶边为 y=1,三个矩形顶边均移到 y=1。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.