华为机试题

news2024/12/30 0:42:38

目录

    • 第一章、HJ1计算字符串最后一个单词的长度,单词以空格隔开。
    • 1.1)描述
    • 1.2)解题
    • 第二章、算法题HJ2 计算某字符出现次数
    • 1.1)题目描述
    • 1.2)解题思路与答案
    • 第三章、算法题HJ3 明明的随机数
    • 1.1)题目描述
    • 1.2)解题思路与答案
    • 第四章、算法题HJ4 字符串分隔
    • 1.1)题目描述
    • 1.2)解题思路与答案
    • 第五章、算法题HJ5 进制转换
    • 1.1)题目描述
    • 1.2)解题思路与答案
    • 1.3)派仔的解题思路与答案
    • 第六章、算法题HJ6 质数因子
    • 1.1)题目描述
    • 1.2)文的盲的解题思路与答案
    • 第七章、算法题HJ7 取近似值
    • 1.1)题目描述
    • 1.2)第一种解题思路与答案
    • 1.3)第二种解题思路与答案
    • 第八章、算法题HJ8 合并表记录
    • 1.1)题目描述
    • 1.2)解题思路与答案

第一章、HJ1计算字符串最后一个单词的长度,单词以空格隔开。

1.1)描述

描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
在这里插入图片描述

1.2)解题

import java.util.Scanner;

public class Main{

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String st = sc.nextLine();
        String[] s = st.split("\\s+") ;//或者st.split(" ");
        int length = s[s.length - 1].length();
        System.out.println(length);
    }
    }

第二章、算法题HJ2 计算某字符出现次数

1.1)题目描述

题目描述:
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。

输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)

示例:
在这里插入图片描述

1.2)解题思路与答案

解题思路:
①查看示例是不关心大小写的,所以需要将大写转为小写
②将s1需要查找的字符串(即s2)全部替换为 “”
③将原来的字符串长度-替换过后的字符串长度=出现的次数

答案:

    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        // 输入第一个字符串并且全部转小写
        String s1 = input.nextLine().toLowerCase();
        // 输入单个字符串并且转小写
        String s2 = input.nextLine().toLowerCase();
        // 完整字符的长度-单个字符长度 = 出现的次数
        int num = s1.length() - s1.replaceAll(s2,"").length();
        System.out.println(num);
    }

第三章、算法题HJ3 明明的随机数

1.1)题目描述

题目描述:
明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。

数据范围: 1 \le n \le 1000 \1≤n≤1000 ,输入的数字大小满足 1 \leval \le 500 \1≤val≤500

输入描述:
第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。

输出描述:
输出多行,表示输入数据处理后的结果

示例:
在这里插入图片描述

1.2)解题思路与答案

解题思路:
①将数据存入TreeSet集合进行去重+排序
②遍历输出数据

答案:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //获取总个数
        int num = sc.nextInt();
        //创建TreeSet进行去重排序
        TreeSet se = new TreeSet();
        //输入num个数据
        for(int i =0 ; i < num ;i++){
            se.add(sc.nextInt());
        }
        Iterator iterator = se.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

第四章、算法题HJ4 字符串分隔

1.1)题目描述

题目描述:
描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;

•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:
连续输入字符串(每个字符串长度小于等于100)

输出描述:
依次输出所有分割后的长度为8的新字符串

示例:
在这里插入图片描述

1.2)解题思路与答案

Luo_xguan的解题思路:
1.获取输入的字符串
2.判断字符串长度,小于8,在后面补上0,达到8位,大于8,先以8位作为
一段截取,再判断剩余字符串长度与8比较,如果小于8,照上述操作,大于8,先截取8位,再判断剩下的…如此循环操作。

答案:

import java.util.Scanner;
/**
 * @author lxg
 * @description 字符串分割
 * @date 2021/9/26
 */
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while(input.hasNextLine()){
            String s = input.nextLine();
            split(s);
        }
    }

    public static void split(String s){
        while(s.length()>=8){
            System.out.println(s.substring(0,8));
            s=s.substring(8);
        }
        if(s.length()<8 && s.length()>0){
            s+="00000000";
            System.out.println(s.substring(0,8));
        }
    }
}

第五章、算法题HJ5 进制转换

1.1)题目描述

题目描述:
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在

输入描述:
输入一个十六进制的数值字符串。

输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例:
在这里插入图片描述

1.2)解题思路与答案

解题思路:
①使用Java自带的Integer.parseInt(String,16) 方法

答案:

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String s = sc.nextLine();
            System.out.println(Integer.parseInt(s.substring(2,s.length()),16));
        }
    }
}

1.3)派仔的解题思路与答案

①res = res * BASE + map.get(ch); 这个公式是精华原理如图:
在这里插入图片描述

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Putest {
    private final static int BASE = 16;
    private static Map<Character, Integer> map = new HashMap<Character, Integer>()
    {{
        put('0', 0);
        put('1', 1);
        put('2', 2);
        put('3', 3);
        put('4', 4);
        put('5', 5);
        put('6', 6);
        put('7', 7);
        put('8', 8);
        put('9', 9);
        put('A', 10);
        put('B', 11);
        put('C', 12);
        put('D', 13);
        put('E', 14);
        put('F', 15);
        put('a', 10);
        put('b', 11);
        put('c', 12);
        put('d', 13);
        put('e', 14);
        put('f', 15);
    }};

    public static int getDecimal(String number) {
        int res = 0;
        char [] arr =number.toCharArray();

        for( int i=0;i<arr .length;++i){
        //这个公式是精华,map.get()方法返回指定键所映射的值
            res = res * BASE + map.get(arr[i]);
        }

  /*      也可以这样写循环
  for (char ch : number.toCharArray()) {
            //这个公式是精华,map.get()方法返回指定键所映射的值
            res = res * BASE + map.get(ch);
        }*/
        return res;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String number = in.next();
            int res = getDecimal(number.substring(2));
            System.out.println(res);
        }
    }
}

第六章、算法题HJ6 质数因子

1.1)题目描述

题目描述:
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
在这里插入图片描述

输入描述:
输入一个整数

输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。

示例:
在这里插入图片描述
在这里插入图片描述

1.2)文的盲的解题思路与答案

解题思路:
①试除法是一种简单有效的方法,可以快速找到给定数的质因数。首先,从最小的质数2开始,不断用给定数去除,如果能整除,则找到一个质因数,并将其记录下来。然后将商作为新的数,继续用质数去除,直到商变为1为止。这样就可以找到给定数的所有质因数。
②因为一个正整数最多有一个质因子大于其平方根,且只会是其本身所以我们判断数 num 是不是质数时,没必要从 2 一直尝试到 num 一样,此题中的大循环也大可不必写一个到 num 的循环,写到 根号num即可,如果此时数字还没有除数,则可判定其本身是一个质数,没有再除下去的必要了,直接打印其本身即可:

答案:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    long num = scanner.nextLong();
    long k = (long) Math.sqrt(num);

    for (long i = 2; i <= k; ++i) {
        while (num % i == 0) {
            System.out.print(i + " ");
            num /= i;
        }
    }
    System.out.println(num == 1 ? "": num+" ");
}

第七章、算法题HJ7 取近似值

1.1)题目描述

题目描述:
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。
数据范围:保证输入的数字在 32 位浮点数范围内

输入描述:
输入一个正浮点数值

输出描述:
输出该数值的近似整数值

示例:
在这里插入图片描述

1.2)第一种解题思路与答案

派仔的解题思路:
①浮点数强转int时,直接舍掉小数,只留下整数。

答案:

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double number = in.nextDouble();
        System.out.println((int)(number + 0.5));
    }
}

1.3)第二种解题思路与答案

解题思路:
①Java中的Math.round()方法是将浮点型进行“四舍五入”转换为int类型的一个方法

答案:

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Double d = sc.nextDouble();
        System.out.println((int)Math.round(d));
    }
}

第八章、算法题HJ8 合并表记录

1.1)题目描述

题目描述:
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000

输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开

输出描述:
输出合并后的键值对(多行)

示例:
在这里插入图片描述

1.2)解题思路与答案

fuxiaoxian的解题思路:
①使用map, 然后要自动排序,就可是使用treeMap
②用map自带的getOrDefault方法,如果根据key没有值,就用默认的0表示方法的值,如果能根据key找到对应的值,那么直接赋值

答案:

import java.util.*;
public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            TreeMap<Integer,Integer>  map = new TreeMap<>();
            while(sc.hasNext()){
                int n = sc.nextInt();
                for(int i =0;i<n;i++){
                    int key = sc.nextInt();
                    int value = sc.nextInt();
                    map.put(key,map.getOrDefault(key,0)+value);
                }
                for(Integer i : map.keySet()){
                    System.out.println(i+" "+map.get(i));
                }
            }
       }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1580741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++——优先级队列

前言&#xff1a;这篇文章我们继续来分享一个c的容器——优先级队列。 一.理解优先级 何为优先级一说&#xff1f;实际上就是有顺序的意思。 优先级队列&#xff0c;即有顺序的队列&#xff0c;是一个无需我们自己进行排序操作&#xff0c;在数据传入时就会由容器自己排好序的…

Linux系统安装内网穿透实现固定公网地址访问本地MinIO服务

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&am…

【蓝桥杯嵌入式】定时器的PWM输出与输入捕获(测量频率与占空比)

【蓝桥杯嵌入式】定时器的PWM输出与脉冲输 入捕获&#xff08;测量频率与占空比&#xff09; PWM输出cubemx配置程序设计 输入捕获cubemx配置程序设计 真题典例分析 PWM输出 cubemx配置 PWM输出引脚配置&#xff0c;这里使用PA6和PA7引脚输出两路PWM信号&#xff0c;分别对应的…

计算机提示msvcp140.dll丢失的解决方法

在日常操作与深度应用计算机系统的过程中&#xff0c;我们难免会遭遇各类技术性问题。其中&#xff0c;一种颇为常见且可能导致应用程序无法正常启动或运行的情况便是“msvcp140.dll文件缺失”。这一现象&#xff0c;对于无论是经验丰富的IT专业人士&#xff0c;还是对计算机知…

Linux操作系统(六):文件系统组件

参考资料&#xff1a;阿秀的笔记 文件系统 1. 文件系统的基本组成2. 文件的使用3.文件如何存储3.1 目录怎么存储 4.Linux继承于Unix系统的Unix文件实现方式4.1 Linux Ext 2/3 文件系统4.2 Linux Ext 4 文件系统4.3 磁盘空闲空间的管理机制4.3.1 空闲表法4.3.2 空闲链表法4.3.3…

网易云歌曲评论抓取

网易云歌曲评论爬取 步骤1.找到一首歌曲2.按下F12键打开开发者模式,对其进行抓包3.查找获得评论数据的接口4.对获得评论数据接口进行分析5.构建加密函数方法一方法二运行结果全部代码使用Js文件只使用python新的代码小结与展望这次的任务是获取网易云音乐下面的评论,涉及的知…

安卓四大组件——Service篇

1.作用 长时间位于后台&#xff08;无界面&#xff09;完成用户指定操作 1.1两类状态 &#xff08;a&#xff09;started&#xff08;启动&#xff09;&#xff1a;当应用程序组件&#xff08;如activity&#xff09;调用startService()方法启动服务时&#xff0c;服务处于sta…

HJ1 字符串最后一个单词的长度(字符串,import java.util.HashSet;)

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别int num sc.nextInt();boolean[] in new boolean[…

设计模式学习笔记 - 设计模式与范式 -行为型:8.状态模式:游戏、工作流引擎中常用的状态机是如何实现的?

概述 本章学习状态模式。在实际的开发中&#xff0c;状态模式并不是很常用&#xff0c;但是在能够用到的场景里&#xff0c;它可以发挥很大的作用。从这一点上看&#xff0c;它有点像我们之前讲到的组合模式。 状态模式一般用来实现状态机&#xff0c;而状态机常用在游戏、工…

✌2024/4/3—力扣—整数反转

代码实现&#xff1a; int reverse(int x) {long num 0;while (x ! 0) {num num * 10 x % 10;x x / 10;}if ((int)num ! num) {return 0;}return (int)num; }

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

Houdini笔记操作技巧_集锦

个人记录下&#xff0c;谨防遗忘。同时丰富下Hou的中文搜素环境。 1、自定义启动界面 ① 设置完界面后&#xff0c;保存自定义界面&#xff08;Save Current Desktop As...&#xff09; ② Edit-->Preferences-->General UIInterface-->Startup in Desktop&#xff1…

qt打包程序打包之跨平台

本文讲的是linux系统中的程序打包&#xff0c;首先我们创建一个简单的程序&#xff0c;我的程序叫做debtest 然后设置qmake来源&#xff0c;这个直接决定了程序依赖的qt库的位置&#xff0c;如果我们需要指定qt标准库的位置&#xff0c;那么qt环境就需要在那个位置。 修改前&am…

C# 如何修改项目名称

目录 背景具体步骤1、Visual Studio中修改项目名和程序集名称以及命名空间2、修改项目文件夹名3、修改解决方案里项目的路径4、再次打开解决方案&#xff0c;问题解决步骤总结 名词解释解决方案&#xff08;Solution&#xff09;项目&#xff08;Project&#xff09;程序集&…

【操作系统】CentOS7入门级安装

下载镜像 CentOS镜像下载Download (centos.org) 我们选择第一个 X86_64 CentOS Mirrors List 版本描述X86_X64带64位的32位扩展版(一般安装这个)ARM64 (aarch64)嵌入式。适用于微端(树莓派、机械臂、机械中控)IBM Power (ppc64le)专用于IBM POWER服务器 选择一个合适的链接 …

DSL - Wire 实现-ApiHug101

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace docs/ha…

javaScript手写专题——防抖/节流/闭包/Promise/深浅拷贝

目录 目录 一、 防抖/节流/闭包/定时器 编写一个组件&#xff0c;在input中输入文本&#xff0c;在给定的数据中查找相关的项目&#xff0c;并渲染搜索结果列表 1.新增InputSearch.vue组件 key的作用 2.新增 InputView.vue 3.添加路由 4.效果演示 follow up加上防抖怎么处理 1.…

如何从头开始编写LoRA代码,这有一份教程

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 作者表示&#xff1a;在各种有效的 LLM 微调方法中&#xff0c;LoRA 仍然是他的首选。 LoRA&…

机器学习-随机森林算法预测温度

文章目录 算法简介解决问题获取数据集探索性数据分析查看数据集字段信息查看数据集综合统计结果查看特征值随时间变化趋势 数据预处理处理缺失数据字符列编码数据集分割训练集、验证集、测试集数据集分割 构建模型并训练结果分析与评估进一步优化实际使用经验总结 算法简介 随…

基于遗传优化的SVD水印嵌入提取算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的的SVD水印嵌入提取算法。对比遗传优化前后SVD水印提取性能&#xff0c;并分析不同干扰情况下水印提取效果。 2.测试软件版本以及运行结果展示 MA…