【データセット選択メニュー】> 【商品の検索】STEP: 2 英小文字の出現率 (paizaランク C 相当) [難易度: 1361 ±17]
※リンク先へ移動するためには[paiza]へのログインが必要です。
長さ N の文字列 S が与えられます。S に含まれている各文字の出現回数をそれぞれ求め、「a」の出現回数、「b」の出現回数、...、「z」の出現回数をこの順に半角スペース区切りで1行に出力してください。
入力値(例)
13
aaabbbccdddde
出力値(例)
3 3 2 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $a = range('a', 'z'); $count = array_fill_keys($a, 0); //print_r($count); $n = trim(fgets(STDIN)); $str = trim(fgets(STDIN)); for($i = 0; $i < $n; $i++) { $count[$str[$i]] += 1; } $ans = implode(" ", $count); echo $ans; ?> |
解説
① $count()という配列にaからzまでのキーで0をセットします。
array_fill_keys(keys, value)
1 2 |
$a = range('a', 'z'); $count = array_fill_keys($a, 0); |
出力
Array
(
[a] => 0
[b] => 0
[c] => 0
[d] => 0
[e] => 0
[f] => 0
[g] => 0
[h] => 0
[i] => 0
[j] => 0
[k] => 0
[l] => 0
[m] => 0
[n] => 0
[o] => 0
[p] => 0
[q] => 0
[r] => 0
[s] => 0
[t] => 0
[u] => 0
[v] => 0
[w] => 0
[x] => 0
[y] => 0
[z] => 0
)
② 入力値を受け取ります。
1 2 |
$n = trim(fgets(STDIN)); $str = trim(fgets(STDIN)); |
③ for()文で$i =0; $i < $n;回ループします。
配列の$countの$str[$i]($str[$i]は例えば$str[0]はa)、つまり$count[a]には+=1を足します。
1 2 3 |
for($i = 0; $i < $n; $i++) { $count[$str[$i]] += 1; } |
④ implode()で配列$countを分割します。echoで出力します。