ABC462 A - Secret Numbers

隠された数

考え方

入力は文字列が $1$ つなので、string 型の変数を $1$ つ用意し、cin で入力を受け取る。

文字列の中身を $1$ 文字ずつ見ていきたいので、forループを用意する。
それぞれの文字について、if文で以下を行えばよい。

数字かどうかの判定は、文字が '0' 以上 '9' 以下かどうかで行える。

if (s.at(i) >= '0' && s.at(i) <= '9') {
  result += s.at(i);
}

また、標準ライブラリ関数 isdigit を用いてもよい。

if (isdigit(s.at(i))) {
  result += s.at(i);
}

最後に、作った答え用の文字列を cout で出力すればよい。

入力例1での動作

入力を受け取る。

s: "abc462"

左から $1$ 文字ずつ見て、数字である文字だけを取り出していく。

位置 文字 判定 ここまでに取り出した数字
$0$ 'a' 数字ではない ""
$1$ 'b' 数字ではない ""
$2$ 'c' 数字ではない ""
$3$ '4' 数字 "4"
$4$ '6' 数字 "46"
$5$ '2' 数字 "462"

数字だけを元の順序で並べると "462" になるので、これを出力する。

注意点

特になし。

別解

ループ内で「今何番目であるか」を使わないので、範囲for文を使ってもよい。

for (char c : s) {
  if (isdigit(c)) {
    result += c;
  }
}

いちいち .at(i) を書く手間が省けるし、文字列の長さを自分で取得するのも不要になる。