题目来源
题目描述
请实现接口:
unsigned int AddCandidate (char* pCandidateName);
功能:设置候选人姓名
输入: char* pCandidateName 候选人姓名
输出:无
返回:输入值非法返回0,已经添加过返回0 ,添加成功返回1
Void Vote(char* pCandidateName);
功能:投票
输入: char* pCandidateName 候选人姓名
输出:无
返回:无
unsigned int GetVoteResult (char* pCandidateName);
功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源
输入: char* pCandidateName 候选人姓名。当输入一个空指针时,返回无效的票数
输出:无
返回:该候选人获取的票数
void Clear()
// 功能:清除投票结果,释放所有资源
// 输入:
// 输出:无
// 返回
题目解析
HashMap结构,Key表示候选人名称,value表示候选人获得投票的数量。通过Scanner的用户输入,进行HashMap中的数据维护, 最后投票记录完成输入,此时按行按要求输出HashMap中的key-value对即可。
题目解答
import java.util.Scanner;
import java.util.HashMap;
import java.util.Set;
public class Main{
public static void main(String args[]){
//控制台输入数据
Scanner in = new Scanner(System.in);
while (in.hasNext()){
//候选人人数
int n = in.nextInt();
String[] s = new String[n];
//记录候选人
HashMap<String,Integer> hs = new HashMap<String,Integer>();
for(int i=0;i<n;i++){
String temp = in.next();
hs.put(temp,0);
s[i] = temp;
}
//投票人数
int m = in.nextInt();
Set<String> keys = hs.keySet();
int cnt = 0;
for(int i=0;i<m;i++){
//投票
String tick = in.next();
if(keys.contains(tick)){
hs.put(tick, hs.get(tick)+1);
}else{
cnt++;
}
}
//输出结果
for(String k:s){
System.out.println(k+" : "+hs.get(k));
}
System.out.println("Invalid : "+cnt);
}
in.close();
}
}