' P '

whatever I will forget

区間分割・連長圧縮系: ABC143 C - Slimes

概要

  • 左から文字列を1つずつ確認して、次の文字と同じか、同じではないかを確認する問題.
  • 最終的にはユニークなCharを連結して出力する.
10
aabbbbaaca

答え

abaca

atcoder.jp

問題タイプ

  • 区間分割・連長圧縮と呼ばれるアルゴリズム.
  • ランレングス圧縮、RLE (Run Length Encoding) とも呼ばれる.
  • ある連続したデータをそのデータ1つ分と連続した長さとの組で表現.

サンプル

n = int(input())
s = input()

i = 0
c = []
# 文字列の長さ分ループ
while i < n:
    # 比較対象の文字のindex
    j = i + 1
    # 比較対象の文字が同じ場合、比較文字のindexを進める
    while j < n and s[j] == s[i]:
        j += 1
    # whileを抜けたので、違う文字を発見
    c.append(s[i])
    # indexを違う文字を発見したところにセット
    i = j
print(len(c))