C - String Invasion Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 500

問題文

長さ N の文字列 S が与えられます。Si 文字目を s_i で表します。以下の操作を繰り返せる回数の最大値を求めてください。

  • 連続する 3 文字 s_i,s_{i+1},s_{i+2}\quad (1\leq i\leq |S|-2) であって、s_i=s_{i+1}\neq s_{i+2} であるものを選ぶ。s_{i+2}s_i で置き換える。

制約

  • 3 \leq |S| \leq 2\times 10^5
  • S は英小文字からなる

入力

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

S

出力

操作を繰り返せる回数の最大値を出力せよ。


入力例 1

accept

出力例 1

3

以下のように 3 回の操作を行うことができます。

  • i=2 に対して操作を行う。操作後の文字列は acccpt になる。
  • i=3 に対して操作を行う。操作後の文字列は acccct になる。
  • i=4 に対して操作を行う。操作後の文字列は accccc になる。

入力例 2

atcoder

出力例 2

0

入力例 3

anerroroccurred

出力例 3

16

Score : 500 points

Problem Statement

Given is a string S of length N. Let s_i denote the i-th character of S. Find the maximum number of times the following operation can be done.

  • Choose three consecutive characters in S, s_i,s_{i+1},s_{i+2}\quad (1\leq i\leq |S|-2), such that s_i=s_{i+1}\neq s_{i+2}, and replace s_{i+2} with s_i.

Constraints

  • 3 \leq |S| \leq 2\times 10^5
  • S consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

S

Output

Print the maximum number of times the operation can be done.


Sample Input 1

accept

Sample Output 1

3

We can do the operation three times, as follows:

  • do it with i=2, changing the string to acccpt;
  • do it with i=3, changing the string to acccct;
  • do it with i=4, changing the string to accccc.

Sample Input 2

atcoder

Sample Output 2

0

Sample Input 3

anerroroccurred

Sample Output 3

16