[paiza][botchi] 高層タワー 题解

这篇博客介绍了如何使用KMP算法解决一道编程挑战——高層タワー。题目要求按特定规则拼接字符串,找到最长公共前后缀并移除。博主解析了问题本质,指出可以修改KMP算法的getNext方法来求解,通过求反向拼接字符串的最长公共前后缀,然后去除一个字符串的相同部分完成拼接。
摘要由CSDN通过智能技术生成

高層タワー

最近被paiza出品的《エンジニアが死滅シタ世界 〜アンドロイドとふたりぼっちで生きろ〜》(《程序员灭亡的世界~和机器人一起生活吧》)这个编程小游戏刷屏,也去试玩了一波。
这是一道类似于PPAP规则的字符串拼接题,找到两个字符串的最长公共前后缀,并去掉一个字符串的公共部分。
问题链接:https://paiza.jp/botchi/challenges/botchi_b_2001

题目描述

単語を組み合わせて新単語を作ります。
新単語は N 個の文字列を、前から順に結合して作ります。

この時、冗長さをなくすため、 前から結合した単語の末尾 と 後ろの単語の先端 が一番長く一致するように結合します。

例えば、 入力例 1 の “paiza”, “apple”, “letter” の場合、
先頭から “paiza”, “apple” を条件どおり重ねると “paizapple” となります。
この単語を更に次の単語と重ねると “paizappletter” となります。
在这里插入图片描述
なお、必ず前から順番に重ねるため、 入力例 2 の “poh”, “p”, “oh” を結合する場合は、
“poh” と “p” を重ねた後の単語 “pohp” と “oh” を重ね “pohpoh” となります。

N 個の単語が与えられるので、前から順番に単語を結合した場合の新単語を出力してください。

输入

N 
w_1 
w_2 
... 
w_N

・1 行目に、結合する単語の数を表す整数 N が与えられます。
・続く N 行のうちの i 行目 (1 ≦ i ≦ N) には、 i 番目に結合する単語を表す文字列 w_i が与えられます。
・入力は合計 N + 1 行であり、最終行の末尾に改行が 1 つ入ります。

输出

・2 ≦ N ≦ 100
・各 i (1 ≦ i ≦ N) に対して以下を満たす。
 ・1 ≦ (w_i の長さ) ≦ 100
 ・w_i は半角英小文字のみで構成されている。

样例1

样例输入

3 
paiza 
apple 
letter

样例输出

paizappletter

样例2

样例输入

3 
poh 
p 
oh

样例输出

pohpoh

题解

这是一道类似于PPAP规则的字符串拼接题,找到两个字符串的最长公共前后缀,并去掉一个字符串的公共部分。
看到最长公共前后缀</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值