演習課題「文字列を受け取るハッシュ関数の実装」
整数nが与えられ、さらにn個の文字列 x_1からx_n が与えられます。
次のようなハッシュ関数H(x)を実装し、各x_1, x_2, ..., x_nをH(x)に与えたときのハッシュ値を求めてください。
H(x) = x.count('p') + x.count('a') + x.count('i') + x.count('z')
期待する出力値
5
5
4
5
0
#04:文字列を受け取るハッシュ関数の実装
このチャプターでは、文字列を受け取るハッシュ関数の実装について学習します。
レベルアップ問題集「ハッシュメニュー」に収録されている「文字列のハッシュ」の問題を通して、具体的なハッシュ関数を実装していきます。
H(x) = x.count('p') + x.count('a') + x.count('i') + x.count('z')
入力
・整数n
・n個の文字列 x_1, x_2, …, x_n
出力
・各x_i (1 ≦ i ≦ n)について、H(x_i)を計算した結果
import java.util.*;
public class Main {
static int count(char c, String x) {
int ret = 0;
for (int i = 0; i < x.length(); i++) {
if (x.charAt(i) == c) {
ret ++;
}
}
return ret;
}
static int H(String x) {
return count('p', x) + count('a', x) + count('i', x) + count('z', x);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String x = sc.next();
System.out.println(H(x));
}
}
}