初歩的な構文解析問題
問題概要
"|---|-|----|-|-----|" のような、文字 '-' を文字 '|' で separate された文字列 が与えられる。
各 '-' 区間の '-' の個数を順に出力せよ。
制約
考えたこと
ここでは for
文で解いてみよう。次の変数を管理する。
num
:今の時点で '-' が連続で何個続いているか
文字列を順に見ていき、次のように処理すれば良い。
- 文字 '|' が来たとき
num
の値を出力するnum
の値を 0 にする
- 文字 '-' が来たとき
num
の値を 1 増やす
文字列の先頭の '|' については無視しよう。
コード
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; int num = 0; for (int i = 1; i < S.size(); i++) { if (S[i] == '|') { cout << num << " "; num = 0; } else { num++; } } cout << endl; }