华为校招上机笔试试题(A卷)——java实现

华为校招上机笔试试题(A卷)——java实现

编程题:A1.最小长方形, A2. 判断一个数字中是否包含两个相同的子串, A3. 取石子游戏.


A1.最小长方形

java代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class MinRectangle {
    public static void main(String arg[]){
        List<Integer> ldata=new ArrayList<Integer>();
        boolean flag=false;// (0,0)连续出现的次数,连续出现两次即结束输入
        int testNum=0;// 测试用例的个数
        Scanner cin=new Scanner(System.in);
        while(cin.hasNext()){
            int x=cin.nextInt();
            int y=cin.nextInt();
            if (Math.abs(x)>1000||Math.abs(y)>1000) return;
            if (x==0&&y==0){
                if (flag){
                    break;
                }else{
                    flag=true;//一个测试用例结束
                    testNum++;
                }
            }else flag=false;
            ldata.add(x);
            ldata.add(y);
        }
        cin.close();

        int size=ldata.size();
        int k=0;
        for (int i=0;i<testNum;i++){
            int minX=Integer.MAX_VALUE;
            int minY=Integer.MAX_VALUE;
            int maxX=Integer.MIN_VALUE;
            int maxY=Integer.MIN_VALUE;
            for (;k<size/2;k++){
                int x=ldata.get(2*k);
                int y=ldata.get(2*k+1);
                if (x==0&&y==0){
                    k++;
                    break;// 一个测试用例结束
                }
                minX=Math.min(x,minX);
                minY=Math.min(y,minY);
                maxX=Math.max(x, maxX);
                maxY=Math.max(y,maxY);
            }
            if (minX!=maxX&&minY!=maxY&&minX!=Integer.MAX_VALUE&&
                    minY!=Integer.MAX_VALUE&&maxX!=Integer.MIN_VALUE&&maxY!=Integer.MIN_VALUE){
                System.out.println(minX+" "+minY+" "+maxX+" "+maxY);
            }
        }
    }
}

A2. 判断一个数字中是否包含两个相同的子串

java代码:

import java.util.Scanner;

public class ChildStr {
    private String str;
    private int len;
    public void input(){
        Scanner cin=new Scanner(System.in);
        str=cin.nextLine();
        len=str.length();
        if (str!=null&&len>9){
            str=null;
            return;
        }
        for (int i=0;i<len;i++){
            char c=str.charAt(i);
            if (c<‘1‘||c>‘9‘){
                str=null;
                return;
            }
        }
    }

    public void search(){
        if (str==null){
            return;
        }
        String s=null;
        for (int i=0;i<len-1;i++){
            s=str.substring(i,i+1);//截取子串
            if (str.lastIndexOf(s)!=i){//从尾部检索是否包含s,返回其位置
                System.out.println(1);
                return;
            }
        }
        System.out.println(0);
    }

    public static void main(String arg[]){
        ChildStr cs=new ChildStr();
        cs.input();
        cs.search();
    }
}

A3. 取石子游戏

java代码:

import java.util.Scanner;

public class FibGame {
    //这里为什么声明数列长度为48呢?因为计算到f[48]已经接近超出int的数据范围了
    private int[] fib=new int[48];
    public void f(){
        fib[0]=0;fib[1]=1;
        for (int i=2;i<48;i++){
            fib[i]=fib[i-1]+fib[i-2];
        }
    }

    public void input(){
        Scanner cin=new Scanner(System.in);
        int n;
        while(cin.hasNext()){
            n=cin.nextInt();
            if (n<=1||n>48){
                System.out.println("请输入大于2小于48的数字");
                return;
            }
            boolean flag=false;
            for (int i=3;i<48;i++){
                if (n==fib[i]){
                    flag=true;
                    break;
                }
            }
            if (flag){
                System.out.println("Second win");
            }else{
                System.out.println("First win");
            }
        }
    }

    public static void main(String arg[]){
        FibGame fg=new FibGame();
        fg.f();
        fg.input();
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 11:04:50

华为校招上机笔试试题(A卷)——java实现的相关文章

2016华为校招上机笔试练习题

1.最高分是多少 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int n,m; while(scanf("%d %d",&n,&m)!=EOF){ int *score = (int*)malloc(sizeof(int)*n); int res[5000]; int cnt = 0; for(int i=0; i<n; i++)

蘑菇街2015校招技术类笔试题A卷,回忆版(杭州站)

笔试时间:10月9号 下午 1.一串数据的最大递增序列,输出个数 例如 4,2, 6,3, 1,5, 最大递增序列为, 2,3, 5,输出3, 2.求两个整型数据集合的交集,尽可能少用时间. 假设两个集合为A.B. 算法步骤: 1.对A和B分别进行从小到大排序: 2.从A[0]和B[0]开始,如果A[i]>B[j],则j++,如果A[i]<B[j],则i++,否则找到交集中的一个元素,输出: 3.j++,再循环2: 4.循环2和3直到A和B有一个数组的下标越界. 3.一个文件记录中有50M个U

JAVA软件工程师笔试试题

JAVA软件工程师笔试试题 (考试时间:120分钟 试卷分值:150分 ) 一. 逻辑推理题[10分] 1.甲.乙.丙.丁四位同学中有一位同学为海啸灾区捐款1000元,当老师询问时,他们分别这样回答: 甲:这1000元不是我捐的 乙:这1000元是丁捐的 丙:这1000元是乙捐的 丁:这1000元不是我捐的 这四人中只有一个人说了真话,由此可见这1000元是谁捐的( ).[2分] A.甲 B.乙 C.丙 D.丁 2. 甲.乙.丙三人是同一家公司的员工,他们的未婚妻A.B.C也都是这家公司的职员.

Java开发工程师上机笔试题

网上看到3道比较好的Java开发工程师上机笔试题,没有答案这里把答案写出来,给大家参考. 1.编一个程序,输入10个整数,并放在数组中,先降序输出所有的数,再统计并输出其中正数.负数和零的个数 package cn.Pigzhu.test; import java.util.Scanner; /**  * 控制台输入10个数字,并输入正负和零的个数  * @author xiaoyezhu  *  */ public class test { public static void main(St

2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)

再来一套2015年的华为机试题. 第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" 分析思路: 容易题 1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,然

校招季笔试---亚马逊2014笔试题(1/4)

校招季笔试---亚马逊2014笔试题(1/4) 1.前言: 去年入学今年就得校招找工作,时间匆匆.最近一直都是各种宣讲笔试.被虐的各种惨不忍睹啊! 分享昨天亚马逊在线笔试题题.水平有限放在这里全当留着纪念吧! 2.且看题目: 2.1 第一题 我的解题思路: 1. 比较一组序列首先处理号序列每个元素,2-A 数字int类型实现icompare接口是可以直接比较大小,所以把J-A转换成int类型依次赋值11-15. 2. 定义一个数据机结构CardRanking 有两个属性Type(int)和Num

华为C语言笔试题集合

①华为笔试题搜集 1.static有什么用途?(请至少说明两种)    1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.    2) 在模块内(但在函数体外),一个被声明为静态的变量能够被模块内所用函数訪问,但不能被模块外其他函数訪问.它是一个本地的全局变量.    3) 在模块内,一个被声明为静态的函数仅仅可被这一模块内的其他函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用 2.引用与指针有什么差别?    1) 引用必须被初始化,指针不必.    2)

2017 校招网上笔试题目

2017 校招网上笔试题目 做了一下某大厂的笔试的题目 1. 一个表, visit(cookie_id, area1, area2, date) 给出各种查询策略中, 哪一种最好,每一条SQL语句大同小异, 几乎看不出区别, 还有6,7个选项,同时字数很长.一般的SQL语句好像有根据查询的嵌套顺序来比较差异的,但是这道题反而没有.反正蒙了一个.没有数字可算,心里没有底,应该证明了SQL语法可能会很大地影响查询效率. 2. 给了几个条件,判断你的名次.又是球赛的问题,考查你的推理能力. 3. en

2015考研 杭电 计算机学院 复试笔试题第一题 JAVA语言解法

杭电 2015年考研 计算机学院 复试笔试第一题 JAVA解法 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /* 杭电2015年 计算机学院 复试 笔试题第一题 JAVA解答 * author 刘汪洋 QQ 605283073 * 求出:字符串如:"34223abd#34SB-11--" * 中整数的和 其中-在数字前表示负号,否则为字符 */ pub