Problem C.哈希映射
题目描述
哈希是计算机科学中一种常用的压维映射方式。对于一个只包含大写字母的字符串我们可以定义这样一种简单的哈希映射方法:
学母A-Z分别代表数字0-25, 整个字符串的哈希值即为空符串中所有字母的权重和。现给出N(N<=105)个长度不超过103仅包含大写字母的字符串
。然后给出所有哈希值为X的字符串,按输入顺序输出, 数据输入保证总长不超过4*107
输入描述
首先输入一个整数N(N<=105),代表字符串的个数。接下来的N行,每行包
含一个长度不超过1000的字符串。最后输入一个整数X。
输出描述
按输入顺序输出所有哈希值为X的字符串。
样例输入
5
AAAA
ABC
ZZ
A
AAA
0
样例输出
AAAA
A
AAA
解答:
import java.util.Scanner;
/*
Problem C.哈希映射
题目描述
哈希是计算机科学中一种常用的压维映射方式。对于一个只包含大写字母的字符串我们可以定义这样一种简单的哈希映射方法:
学母A-Z分别代表数字0-25, 整个字符串的哈希值即为空符串中所有字母的权重和。现给出N(N<=105)个长度不超过103仅包含大写字母的字符串
。然后给出所有哈希值为X的字符串,按输入顺序输出, 数据输入保证总长不超过4*107
输入描述
首先输入一个整数N(N<=105),代表字符串的个数。接下来的N行,每行包
含一个长度不超过1000的字符串。最后输入一个整数X。
输出描述
按输入顺序输出所有哈希值为X的字符串。
样例输入
5
AAAA
ABC
ZZ
A
AAA
0
样例输出
AAAA
A
AAA
*/
public class Test{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
int n = scanner.nextInt();
String[] str = new String[n];
for(int i = 0; i < n; i++)
str[i] = scanner.next();
int x = scanner.nextInt();
for(int i = 0; i < n; i++) {
int count = 0;
for(int j = 0; j < str[i].length(); j++)
count += str[i].charAt(j) - 'A';
if(count == x) System.out.println(str[i]);
}
}
}
}