B - 分類たん
時間制限 : 2sec / スタック制限 : 10MB / メモリ制限 : 64MB問題文
分類たんは、スペースをカンマ区切りにするのが大好き。でも、スペースが続いたときは、カンマ 1 つで書きたい。
文字列が与えられるので、与えられた文字列のスペースをカンマ区切りにした文字列を出力してください。
入力
入力は以下の形式で標準入力から与えられる。c1c2…cN
入力として文字列が 1 行で与えられる。
入力の文字列長 N は、 1≤N≤2000 を満たす。
i 文字目の文字 ci は大文字のアルファベット (A, …, Z) 、カンマ (,) 、スペース( ) のいずれかである。
文字列の最初の文字 c1 と最後の文字 cN はスペースではない。
出力
入力として与えられた文字列のスペースをカンマ区切りにした文字列を標準出力に 1 行で出力せよ。ただし、複数の連続したスペースは 1 つのカンマにする。
なお、行の終端には改行が必要である。
出典
B: 分類たん - 天下一プログラマーコンテスト2012 予選A | AtCoder回答
AtCoder/tenka1_2012_A_2.php at master · wada811/AtCoder · GitHub<?php $str = rtrim(fgets(STDIN)); do{ $str = str_replace(' ', ' ', $str); }while(strpos($str, ' ')); $str = str_replace(' ', ',', $str); echo $str.PHP_EOL; ?>ねずみ算より簡単だったので難易度設定に違和感。
スペース二つがなくなるまでスペース一つに圧縮して最後にカンマに置換するだけ。
strposは見つからないとFALSEを返すけど一文字目で0を返すから判定には注意。
今回は最初の文字にスペースが入らないと定義されているので安心して使える。