给定一个字符串,您的任务是将其折叠成如下所述的锯齿状结构。
折成锯齿形
我们将以字符串"Mississippi"
为例:
首先,输出仅包含唯一字符的最长前缀:
Mis
当您到达第一个重复的字符C时,请忽略它,并
issippi
在第一次出现的C之下垂直输出由剩余字符串()的唯一字符组成的最长前缀:Mis i s
重复此过程,在水平和垂直连续之间交替。但是现在要小心(在步骤1),从最近出现的重复字符(不一定是最后一个字符)继续水平输出,在这种情况下:
Mis i sip ----- Mis i sip i
规则
- 该字符串将仅包含可打印的ASCII字符,但不包含任何类型的空格。
- 您可以使用任何编程语言进行竞争,并且可以通过任何标准方法并以任何合理的格式1进行输入和提供输出,同时请注意,默认情况下,这些漏洞是禁止的。这是代码高尔夫球,因此每种语言的最短提交(以字节为单位)将获胜。
- 1输入:字符串/字符列表/您的语言用来表示字符串的其他任何字符。输出:多行字符串,代表行的字符串列表或字符/长度为1的字符串列表,但是如果可能的话,请在答案中包含漂亮的代码版本。
- 关于其他空格,输出可能包含:
- 前导/尾随换行符
- 每行末尾的空格
- 一个一致的前导空格每行号
- 您必须开始水平输出,而不能垂直开始。
测试用例
输入:
“完善” 密西西比州 “奇数” “特权” “克苏鲁” “ PPCG” “ pOpOpOpOpOpOpOp” “ ABCCCE” “ ABCCCECCEEEEC” “ abcdcebffg” “阿布卡” “ AAAAAAAA”
相应的输出:
性能 C Ť
失误 一世 啜 一世
奥德 ies Ť
琐事 一种 升 ies Ť
克苏尔 ü
P C G
O OpO O p
美国广播公司 C Ë
美国广播公司 CCE 欧共体
A B C D Ë b fg
abc
一种 机管局 一种
我们应该如何处理小写/大写?例如
—
Rod
ABCcde
您应该将它们视为不同的字符。例如
—
Xcoder先生
"A" ≠ "a"
。该输出ABCcde
将只是ABCcde
测试案例建议:
—
JungHwan Min
AAAAAAAA
@JungHwanMin AAAAAAA也添加了一个。
—
Xcoder先生18年
b
,因为您应该只考虑其余字符串中的重复项,也就是在“分支”之后。一旦到达第二个c
,您将输出剩余字符串的唯一字符的最长前缀,即ebffg
(因此ebf
垂直输出,然后水平继续输出),因此您不必担心字符串部分中的字符在切换方向之前已经输出。如果您仍然不清楚,我将使用此测试用例再做一个分步示例。