【ハッシュメニュー】> 【ハッシュ関数を作ってみよう】STEP: 3 文字列のハッシュ (paizaランク C 相当) [難易度: 1221 ±35]
※リンク先へ移動するためには[paiza]へのログインが必要です。
前問までで実装したハッシュは、ともに整数値を入力としてとるものでした。ハッシュの入力として与えられるデータは、整数値に限りません。文字列、オブジェクトなどさまざまです。本問では、文字列を入力とするハッシュ関数を実装してみましょう。
n 個の文字列 x_1, x_2, ..., x_n が与えられます。各 x_i について、以下のハッシュ関数を用いてハッシュ値を計算してください。
H(x) = x.count('p') + x.count('a') + x.count('i') + x.count('z')
なお、文字列 s と文字 c について、s.count(c)
は s に含まれる文字 c の個数を表します。
入力値(例)
5
paiza
pizza
kirishima
aizap
neko
出力値(例)
5
5
4
5
0
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $n = trim(fgets(STDIN)); for ($i = 0; $i < $n; $i++) { $s = trim(fgets(STDIN)); $len = mb_strlen($s); $count = 0; for ($j = 0; $j < $len; $j++) { $x = "paiz"; for ($k = 0; $k < 4; $k++) { if ($s[$j] == $x[$k]) { $count++; } } } echo $count. "\n"; } ?> |