考虑以下按字母排序的单词列表:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
所有单词均以开头b
,而前5个以开头bal
。如果我们只看前两个单词:
balderdash
ballet
我们可以这样写:
balderdash
+let
在' '
一个单词与前一个单词共享前缀字符的地方使用;除了'+'
表示最后一个字符的字符外,第二个单词与前一个单词共享前缀。
这是一种“尝试”可视化效果:父级为' bal
',有2个后代:'derdash'
和'let'
。
具有更长的列表,例如:
balderdash
ballet
brooding
我们还可以使用竖线字符'|'
来使共享前缀的结束位置更清晰,如下所示:
balderdash
| +let
+rooding
等价的树将'b'
具有两个子树的根:具有root 'al'
和的子树及其两个子树'derdash'
和'let'
; 和'rooding'
。
如果我们将此策略应用于原始列表,
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
我们得到的输出看起来像:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
如果列表中的两个连续单词没有共享前缀,则不会替换特殊字符;例如列表:
broom
brood
crude
crumb
我们需要输出:
broom
+d
crude
+mb
输入值
输入中的单词将仅由字母数字组成(无空格或标点符号);只要指定指定的格式,这可以采用字符串列表,单个字符串或任何其他合理方法的形式。没有两个连续的单词将是相同的。该列表将按字母顺序排序。
输出量
您的输出可以每行或总共包含尾随空格,但不能包含前导空格。字符串列表或类似列表也是可以接受的。
这是代码高尔夫球;每种语言中最短的代码保留吹牛的权利。通常禁止出现漏洞。
测试用例
Input:
apogee
apology
app
apple
applique
apply
apt
Output:
apogee
|+logy
+p
|+le
| +ique
| +y
+t
Input:
balderdash
ballet
balloonfish
balloonist
ballot
brooding
broom
donald
donatella
donna
dont
dumb
Output:
balderdash
| +let
| +oonfish
| | +ist
| +t
+rooding
+m
donald
| |+tella
| +na
| +t
+umb
+
在第一个下获得一个o
,但是我没有写挑战,所以我不确定。
ball
之后呢balloon
?我们应该期待什么输出?