华为2018软件岗笔试题解题思路和源代码分享

  2017年9月26日,参加了华为技术有限公司的笔试,题目类型是软件题,没有选择填空问答类型,总共是3道编程题目,题目难度适中,在两个小时内完成3道题目的AC,所以分享的代码都是可运行且完全AC的! 和广大网友分享,相互交流提高。

***********************************************

题目描述

  输入两个字母串,将两个字母串都包含的字母用'_'替换后,输出两个字母串的剩余部分。
输入描述:
  输入两个字符串,字符串最大长度为100。字符串只包含字母,不可能为空串,区分大小写。
输出描述:
  按字符串顺序输出处理后的字符串

示例1
  输入
  abcd
  bdef
  输出
  a_c_
  __ef

 

解题思路:对输入的两个字符串分别建立ASCII字符顺序的hash表,hash表默认为0,遍历一次字符串,每出现一个字符对应的hash表加1,可以得到包含字符出现次数的hash表。在输出时,对字符串中的每一个字符根据两个hash表判断是否在两个字符串都包含,如果是用'_'替换,否则输出原字符。

程序链接:  https://github.com/wylloong/TinyPrograms/blob/master/Coding%20Interviews/HW_ReplaceSameCharsAs_ (同步更新)

 

***********************************************

题目描述
   一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算方法如下:

  首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。

  你的任务是编写程序根据输入的ISBN号码的前3段,计算出识别码,并输出完整的ISBN码。
输入描述:
  为一个ASCII字符串。内容为ISBN码的前三段,以上面为例,就是0-670-82162。
输出描述:
  若判断输入为合法的字符串,则计算出识别码,并输出完整的ISBN码;
  若输入不合法,则输出字符串”ERROR”;

 

示例1
  输入
  0-670-82162

  输出
  0-670-82162-4

 

解题思路:实现功能难度较低,注意异常输入和边界值。先判断输入的字符串是否合法,合法后分解字符串为字符保存到数组中,然后根据公式依次计算字符的乘积,最后取余,但是需要注意10的输出具有特殊性!

程序链接: https://github.com/wylloong/TinyPrograms/blob/master/Coding%20Interviews/HW_ISBNCheckCode.cpp

 

***********************************************

 

题目描述

  主机名由多级域名组成,自右向左,依次是顶级域名、二级域名、三级域名…..以此类推
  例,主机名:google.com.hk
  hk是顶级域名
  com是二级域名
  google是三级域名
  现在我们需要实现一个主机名的排序功能
  排序规则
  1)主机名按照域名等级排序,即先按照顶级域名排序,顶级域名相同的再按照二级域名排序,顶级和二级域名均相同的再按照三级域名排序,以此类推,直到整个主机名排序完毕
  2)如果短主机名是由长主机名从顶级域名开始的连续一个或多个域名组成,短主机名排在长主机名前面。例:google.com 排在 gmail.google.com 之前
  3)每一级域名按照字典顺序排序,字典顺序定义见下页
 

  输入确保符合以下规则(无需检查)
  1)主机名以字符串形式给出,非空串
  2)主机名中仅包含小写英文字母和分隔符’.’
  3)主机名中没有连续的’.’,不以’.’开始,也不以’.’结束
  3)主机名不存在重复
  1、两个单词(字母按照自左向右顺序)先以第一个字母作为排序的基准,如果第一个字母相同,就用第二个字母为基准,如果第二个字母相同就以第三个字母为基准。依此类推,如果到某个字母不相同,字母顺序在前的那个单词顺序在前。
例:abc 排在 abf 之前
  2、如果短单词是长单词从首字母开始连续的一部分,短单词顺序在前。
  例:abc 排在 abcd 之前

输入描述:
  不超过255个字符的字符串,不同的域名间用字符'|'进行分隔。
输出描述:
  排序后的的域名,域名间用字符'|'进行分隔。

示例1
  输入
  mail.huawei.com|huawei.com|teltalk.org|google.com.hk|imail.huawei.com
  输出
  huawei.com|imail.huawei.com|mail.huawei.com|google.com.hk|teltalk.org

 

  解题思路:首先根据“|”字符来分割输入域名字符串,保存到list中。结合插入排序的思想,针对每一个域名根据‘,’分隔,然后依次和已经排好序的域名序列比较,直到找到符合条件的位置,即大于已排序域名序列的前者,小于后者,插入到排序好的域名序列中,完成域名的排序!

 

程序链接: https://github.com/wylloong/TinyPrograms/blob/master/Coding%20Interviews/HW_DomainNameRanking.py

 

转载于:https://www.cnblogs.com/DHUtoBUAA/p/7747425.html

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

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

相关文章

docker镜像加载原理

docker镜像加载原理

设计模式是用来弥补面向对象编程缺陷的方法总结

面向对象和设计模式都是大家耳熟能详的概念。面向对象是以对象为基本元素,对数据与逻辑行为进行封装。实现面向对象过程的方法是使用抽象,同时在使用抽象进行分析设计的时候就产生了类型,并隔离了抽象与实现。这个过程是有很多的优点的&#…

navicat的安装

1.下载 这里使用的是11.1版本。 2.安装到D盘 3.破解 下载 参考:http://www.cnblogs.com/da19951208/p/6403607.html 将PatchNavicat粘贴到安装目录,然后双击 选择navicat、 结果: 4.这个时候可以使用了 转载于:https://www.cnblogs.com/junca…

docker实现宿主机和容器之间映射添加数据卷

docker run -it —privilegedtrue -v /宿主机绝对路径:/容器内目录 镜像名 卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷 在ubuntu容器内 /tmp/docker_data 下新建test.txt文件 在宿主机…

实验四 恶意代码

中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验四 恶意代码技术 学生姓名 冷其航 年级 14级 区队 二区队 指导教师 高见老师 信息技术与网络安全学院 2017年10月24日 实验任务总纲 2017—2018 学年 第 一 学期 一、实验…

Linux系统删掉多个文件

rm -f 2010-10-*.log转载于:https://www.cnblogs.com/dpf-learn/p/7752952.html

docker启动容器指定端口和随机分配端口

例子 我要启动tomcat docker run -d -P tomcat 大些-P表示随机分配端口 docker run -d -p 8086:8080 tomcat 小些-p 表示指定端口,主机端口:docker容器端口

华为 思科 配置

华为路由器交换机配置命令:计算机命令 PCAlogin:root;使用root用户 password:linux;口令是linux #shutdown-hnow;关机 #init0;关机 #logout;用户注销 #login;用户登录 #ifconfig;显示…

Windows 7 下IIS 7.5 结合Zend构建PHP集成开发环境

Windows 7 下IIS 7.5 结合Zend构建PHP集成开发环境 作者:宋杨日期:2010年7月4日星期日FeedBack:songyangsongyang.me系统环境:Windows 7 简体中文旗舰版软件环境:1、 IIS 7.5(安装FastCGI)2、 Z…

在docker安装完tomcat后,访问地址出现404错误

在docker安装完tomcat后,访问地址出现404错误 可以看到我们平时访问的文件在webapps文件夹下,而这里的这个文件夹却为空,因为他把文件都放在webapps.dist文件夹下了,所有你只需要把webapps文件夹里面的内容移到webapps里面即可 …

czy的后宫5

题目描述 Description \(czy\) 要召集他的妹子,但是由于条件有限,可能每个妹子不能都去,但每个妹子都有一个美丽值,\(czy\) 希望来的妹子们的美丽值总和最大(虽然……)。\(czy\) 有一个周密的电话通知网络&…

解决Use ‘docker scan‘ to run Snyk tests against images to find vulnerabilities and learn how to fix th

Use docker scan to run Snyk tests against images to find vulnerabilities and learn how to fix them 解决方案 执行如下命令 export DOCKER_SCAN_SUGGESTfalse

上传附件删除、session清空问题

最近因为项目的需要,将客户端附件上传至服务器,附件上传的位置是IIS目录下的文件夹,经过处理之后。必须将该附件删除。 程序发布之后,使用该功能,结果项目无法运行。必须要重新启动IIS才可以重新运行整个项目。因为项目中的Sessio…

浅谈Junit4和TestNG中的参数化测试

最近在看Junit4的相关知识,由于本身做的是自动化方面的测试,所以工作上着重于应用TestNG。恰好遇到了一个将case进行参数化的需求,故在此记录Junit4和TestNG在参数化方面的区别。 一、Junit4和TestNG的注释支持 特点JUnit 4TestNG测试注释Tes…

使用docker查看和删除虚悬镜像

虚悬镜像是REPOSITORY和TAG为<none>的镜像 none镜像(虚悬镜像),那是因为 构建镜像过程中因为脚本错误导致很多镜像构建终止&#xff0c;产生很多none标签的版本 手动构建镜像的时候没有进行提交&#xff0c;遗留来的垃圾镜像 这些镜像占据较大的存储空间&#xff0c;需要…

局部变量、全局变量、堆、堆栈、静态和全局

局部变量、全局变量、堆、堆栈、静态和全局--------------------------------------------------------------- 一般全局变量存放在数据区&#xff0c;局部变量存放在栈区&#xff0c; 动态变量存放在堆区&#xff0c;函数代码放在代码区。 ----------------------------------…

博客园的编辑器毛病真多.....

1.有时候首行插入代码后&#xff0c;想删除代码做不到了——代码可以删除&#xff0c;可是那个框死活删不掉。 2.有时候删除大段内容的时候会突然卡住&#xff0c;然后整个页面回退到初始状态——编辑的内容没了&#xff0c;自动保存中也没有。 3.有时候进入编辑页面能看到编辑…

MSN消息提示类(II)

纯js编写跨框架无图片支持调速度任意位置弹出需要ie5.5以上 <HTML><HEAD><SCRIPT languageJavaScript><!--/**//* ** ** 类名&#xff1a;CLASS_MSN_MESSAGE ** 功能&#xff1a;提供类似MSN消息框 ** 示例&#xff1a; ----------…

查看docker-compose --version报错syntax error near unexpected token `(‘‘usr/local/bin/docker-compose:

问题 执行docker-compose --version查看版本是报错如下 /usr/local/bin/docker-compose: line 2: html: No such file or directory /usr/local/bin/docker-compose: line 3: head: No such file or directory /usr/local/bin/docker-compose: line 4: meta: No such file …

Android隐藏软键盘收回软键盘

代码改变世界 Android隐藏软键盘收回软键盘 InputMethodManager imm (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // 隐藏软键盘 imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0); 代码中点击按钮实现隐藏软键盘…