zoukankan      html  css  js  c++  java
  • 网易2017校园招聘数据挖掘笔试题

    题目一:藏宝图

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    牛牛拿到了一个藏宝图,顺着藏宝图的指示,牛牛发现了一个藏宝盒,藏宝盒上有一个机关,机关每次会显示两个字符串 s 和 t,

    根据古老的传说,牛牛需要每次都回答 t 是否是 s 的子序列。注意,子序列不要求在原字符串中是连续的,例如串 abc,

    它的子序列就有 {空串, a, b, c, ab, ac, bc, abc} 8 种。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    输入描述:每个输入包含一个测试用例。每个测试用例包含两行长度不超过 10 的不包含空格的可见 ASCII 字符串。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    输出描述:输出一行 “Yes” 或者 “No” 表示结果。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------

    示例1

    输入:

    x.nowcoder.com

    ooo

    输出:

    yes

    -----------------------------------------------------------------------------------------------------------------------------------------------------------

    正确的代码:

    package problem1;
    import java.util.*;
    
    /**
     * Created by Administrator on 2017/9/8.
     */
    public class CaoBaoTu_Right {
    
        public static final void main(String[] args){
            Scanner scan=new Scanner(System.in);
            while(scan.hasNext()){
                String str1=scan.nextLine();
                String str2=scan.nextLine();
                boolean result=isContain(str1,str2);
                if(result){
                    System.out.println("Yes");
                }else{
                    System.out.println("No");
                }
            }
            scan.close();
        }
    
        public static boolean isContain(String str1,String str2){
            for(int i=0,index=0;i<str1.length();i++){
                if(str1.charAt(i)==str2.charAt(index)){
                    index++;
                    if(index==str2.length()){
                        return true;
                    }
                }
            }
            return false;
        }
    
    
    }
    View Code

    自己写的代码:

    package problem1;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.Set;
    
    /**
     * http://blog.csdn.net/a819825294/article/details/52098020
       牛牛拿到了一个藏宝图,顺着藏宝图的指示,牛牛发现了一个藏宝盒,藏宝盒上有一个机关,机关每次会显示两个字符串s和t,根据古老的传说,牛牛需要每次都回答t是否是s的子序列。注意,子序列不要求在原字符串中是连续的,例如串abc,它的子串序列就有{空串,a,b,c,ab,ac,bc,abc}8种。
     */
    public class CangBaoTu {
        public static void main(String[] args) {
    
            Scanner in = new Scanner(System.in);
    
            //两字符串输入
            String s1 = in.nextLine();
            //System.out.println("s1:"+s1);
            String s2 = in.nextLine();
           // System.out.println("s2:"+s2);
    
            //创建两个HashMap集合,存放字符串
            HashMap<Character, Integer> hashMap1 = new HashMap<Character, Integer>();
            HashMap<Character, Integer> hashMap2 = new HashMap<Character, Integer>();
    
            //统计字符串s1的频率
            for (char c1 : s1.toCharArray()) {
                if (hashMap1.containsKey(c1)) {
                    hashMap1.put(c1, hashMap1.get(c1) + 1);
                } else {
                    hashMap1.put(c1, 1);
                }
            }
    
            //统计字符串s2的频率
            for (char c2 : s2.toCharArray()) {
                if (hashMap2.containsKey(c2)) {
                    hashMap2.put(c2, hashMap2.get(c2) + 1);
                } else {
                    hashMap2.put(c2, 1);
                }
            }
    
            //判断是否包含
            Set<Map.Entry<Character, Integer>> set1 = hashMap1.entrySet();
    
            /*for (Map.Entry<Character, Integer> entry1 : set1) {
                  Character key1=entry1.getKey();
                  Integer value1=entry1.getValue();
                System.out.println(key1+" "+value1);
            }*/
    
    
    
            Set<Map.Entry<Character, Integer>> set2 = hashMap2.entrySet();
            /*
            for (Map.Entry<Character, Integer> entry2 : set2) {
                Character key2=entry2.getKey();
                Integer value2=entry2.getValue();
                System.out.println(key2+" "+value2);
            }*/
    
            String flag="No";
            for (Map.Entry<Character, Integer> entry1 : set1) {
                for (Map.Entry<Character, Integer> entry2 : set2) {
                    if (entry1.getKey().equals(entry2.getKey()) && (entry1
                            .getValue() == entry2.getValue())) {
                        flag="Yes";
                    }
                }
            }
    
            System.out.println(flag);
        }
    }
    View Code

    题目二:下厨房

     -------------------------------------------------------------------------------------------------------------------------------------------------    

     牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。

     ------------------------------------------------------------------------------------------------------------------------------------------------

    输入描述:

    每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。

    -----------------------------------------------------------------------------------------------------------------------------------------------

    输出描述:

    输出一行一个数字表示完成所有料理需要多少种不同的材料。

    --------------------------------------------------------------------------------------------------------------------------------------------

    输入

    BUTTER FLOUR HONEY FLOUR EGG

    输出

    4

    --------------------------------------------------------------------------------------------------------------------------------------------

    package problems;
    
    import java.util.HashSet;
    import java.util.Scanner;
    
    
    /**
     * 牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。
     *
     * 测试用例
     *    BUTTER FLOUR
          HONEY FLOUR EGG
     输出:4
     */
    public class LiaoLi {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            HashSet<String> hashSet = new HashSet<String>();
    
            while (in.hasNext()) {
                String str=in.nextLine();
                String[] arr=str.trim().split(" ");
                for(int i=0;i<arr.length;i++){
                    hashSet.add(arr[i]);
                }
            }
            System.out.println(hashSet.size());
            hashSet.clear();
        }
    }
    View Code

     ------------------------------------------------------------------------------------------------------------------------------------------

    题目三:

     ------------------------------------------------------------------------------------------------------------------------------------------

    n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。

     ------------------------------------------------------------------------------------------------------------------------------------------

    输入描述:

    每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 100)。

     ------------------------------------------------------------------------------------------------------------------------------------------

    输出描述:

     ------------------------------------------------------------------------------------------------------------------------------------------

    输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1

    ------------------------------------------------------------------------------------------------------------------------------------------

    示例1

    输入

    4

    7 15 9 5

    输出

    3

     ------------------------------------------------------------------------------------------------------------------------------------------

    package problem5;
    
    import java.util.Scanner;
    
    /**
     * n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。
     */
    public class FeiApple {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNextInt()) {
                int n = scanner.nextInt();
                int[] num = new int[n];
                for (int i = 0; i < n; i++) {
                    num[i] = scanner.nextInt();
                }
                System.out.println(avg(num));
            }
        }
    
        public static int avg(int[] num) {
            int average = 0;
            int sum = 0;
            int len = num.length;
            for (int i = 0; i < len; i++) {
                sum += num[i];
            }
            average = sum / len;
            if (sum % len != 0) {
                return -1;
            }
            for (int i = 0; i < len; i++) {
                int t = Math.abs((num[i] - average));
                if (t % 2 != 0)
                    return -1;
            }
            int index = 0;
            for (int i = 0; i < len; i++) {
                if (num[i] > average)
                    index += (Math.abs(num[i] - average) / 2);
            }
            return index;
        }
    }
    View Code
  • 相关阅读:
    一个完善的ActiveX Web控件教程
    用ATL开发和部署ActiveX网页控件
    非IE内核浏览器支持activex插件
    OCX控件在IE中无法侦测到键盘消息( MFC ActiveX Control in IE Doesn't Detect Keystrokes)
    CImageList使用简要说明
    VC,一条会被鼠标移动的直线
    Java NIO学习笔记之基本概念
    netty源码分析
    如何绕过验证码方式总结
    解决Eclipse 启动后总是Building WorkSpace(sleeping)
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7496868.html
Copyright © 2011-2022 走看看