解题思路:
两个HashMap

map1存以学号为key,性别为value

map2存以姓名为key,学号为value

查找时如果学号查找则直接在map1找,如果以姓名查找,则先在map2找查到学号


map1存以学号为key,性别为value

map2存以姓名为key,性别为value

姓名学号都是唯一的

注意事项:
第一种思路实现
参考代码:

import java.util.*;

public class Main{
    public static void main(String[]args){
		// TODO Auto-generated method stub
    	Scanner sc=new Scanner(System.in);
    	HashMap<Integer, Character> map1=new HashMap<Integer, Character>();
    	HashMap<String, Integer> map2=new HashMap<String, Integer>();
    	int n=sc.nextInt();
    	for(int i=0;i<n;i++)
    	{
    		String s=sc.next();
    		int id=sc.nextInt();
    		char c=sc.next().charAt(0);
    		map1.put(id, c);
    		map2.put(s, id);
    	}
    	int m=sc.nextInt();
    	for(int i=0;i<m;i++)
    	{
    		String a=sc.next();
    		String b=sc.next();
    		char c1,c2;
    		if(isNumber(a))
    			c1=map1.get(Integer.valueOf(a));
    		else
    			c1=map1.get(map2.get(a));
    		if(isNumber(b))
    			c2=map1.get(Integer.valueOf(b));
    		else
    			c2=map1.get(map2.get(b));
    		
    		if(c1!=c2)
    			System.out.println("Y");
    		else 
    			System.out.println("N");
    	}
    }  
    static boolean isNumber(String s)
    {
    	for(int i=0;i<s.length();i++)
    	{
    		if(!(s.charAt(i)>='0' && s.charAt(i)<='9'))
    			return false;
    	}
    	return true;
    }
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论