B - 高橋くんと文字列圧縮 Editorial

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋くんはある文字列 ss を持っています。文字列を短く表現することに興味のある高橋くんは、以下の圧縮方法を試してみることにしました。

  1. 文字列 ss を同じ文字が連続する文字列に分割します。(分割)
  2. 分割された各文字列を、文字と、その文字が連続する長さをつなげた新たな文字列に変換します。(変換)
  3. 最後に、変換した各文字列を前から順に結合します。(結合)

aabbbaad という文字列に上記の圧縮方法を適用すると

  1. aabbbaadaa bbb aa d に分割
  2. aa bbb aa d を、それぞれ a2 b3 a2 d1 に変換
  3. a2 b3 a2 d1a2b3a2d1 と結合

以上より、a2b3a2d1 を得ることができます。

あなたには文字列 ss が与えられるので、上記の方法で圧縮された文字列を求めるプログラムを、高橋くんの代わりに書いてください。


入力

入力は以下の形式で標準入力から与えられる。

ss
  • 圧縮する文字列 s(1s1,000)s (1 ≦ |s| ≦ 1,000) が与えられる(s |s| は文字列 ss の長さを表す)。
  • ss は英小文字から成る文字列であることが保証される。

出力

ss から作られた圧縮された文字列を標準出力に出力せよ。

末尾の改行を忘れないこと。


入力例1Copy

Copy
aabbbaad

出力例1Copy

Copy
a2b3a2d1

問題文中の例です。


入力例2Copy

Copy
aabbbbbbbbbbbbxyza

出力例2Copy

Copy
a2b12x1y1z1a1

長さは10進表記です。


入力例3Copy

Copy
edcba

出力例3Copy

Copy
e1d1c1b1a1

圧縮された結果、元の文字列より長くなることもあります。



2025-03-14 (Fri)
02:15:45 +00:00