给定一个可能装在框中的字符串,请切换该框。在测试用例和说明中,这一点变得更加清楚。
输入输出
输入格式
输入将是由CR,LF或CRLF分隔的单个字符串,或者是字符串列表。输入格式由您决定。
输出格式
输出格式必须与输入格式相同。
说明+示例
让我们以一个装箱的字符串为例:
+-------------+
|Hello, World!|
+-------------+
要切换此框,我们将删除第一行和最后一行以及第一行和最后一列。您可能会假设最后一行之后没有尾随空格(在最后一行的末尾有一个可选的尾随换行符),并且任何一行都没有尾随空格,当然也不算换行符。
这将变成:
Hello, World!
另一种方法
如果该字符串不在框中,请在其中添加一个框。这很简单;前置+---...---+
自身与线k
破折号其中k
是最长行的长度,然后对每一行,与后空白匹配最长行的长度,然后前置和追加一个管道字符垫它("|"
)。最后,添加一行,其中包含与+---...---+
第一行相同的设置。
例如:
Hello, World!
变成:
+-------------+
|Hello, World!|
+-------------+
您可以假定输入中的任何行都不会包含尾随空格。
字符串的另一个示例应带有一个框:
Hello,
World!
变成
+----------+
|Hello, |
| World!|
+----------+
仍应装箱的示例:
+--------+
| |
--------+
变成:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
规则+规格
- 适用标准漏洞
- 无论输入行是否装箱,输入行的整体和每一行都不会有任何前导或尾随空格。
- 框仅将
+
其角,|
垂直边缘和-
水平侧作为角。 - 盒子必须具有其优点,才能被认为是盒子;如果它的高度或宽度为2(即没有内容),则仍应取消装箱,这将导致一堆换行符,具体取决于盒子的高度。
- 如果输入中有一个框,但框外有文本,则应将整个框都装箱。
- 您的程序必须检查字符串的整个边界。如果外部的单个字符不正确(缺少字符或与应有的字符不同),则应将其装箱,而不是拆箱。
- 未装箱的字符串本身可能包含
+ | -
。如果未装箱的字符串本身周围有一个框,请返回带有框的字符串;否则,请返回该字符串。只能拆箱一次。
边缘案例
1:小盒子
输入:
++
++
输出为空或换行符
输入:
+----+
+----+
输出为空或换行符
输入:
++
||
||
++
输出为2个换行符或3个换行符
2:偏盒
输入:
+-------+
| Hello |
+ ------+
输出:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3:框外的文字
输入:
+-------+
a| Hello |
+-------+
输出:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+