- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
华为OD机试真题1-10(JavaScript)
本文档的题目都是真题(非练习题),考到原题的概率很大,
通过的几率也很大。
1.IPV4地址转换成整数
存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~255,以#号间隔,虚拟IPv4地址
可以转换为一个32位的整数,例如:128#0#255#255,转换为32位整数的结果为2147549183
(0x8000FFFF),1#0#0#0,转换为32位整数的结果为(0),现以字
符串形式给出一个虚拟IPv4地址,限制第1小节的范围为1~128,即每一节范围分别为
(1~128)#(0~255)#(0~255)#(0~255),要求每个IPv4地址只能对应到唯一的整数上。如果是非
法IPv4,返回invalidIP
示例:
输入
100#101#1#5
输出
1684340997
输入
1#2#3
输出invalidIP
代码:
letlen=strings.length;
letcount=0;
letisF=true;
if(len==4){
for(leti=0;ilen;i++){
letn=Number(strings[i]);
if(i==0(n1||n128)){//第一节1~128
isF=false;
break;
}elseif(n0||n255){//二、三、四节0~255
isF=false;
break;
}
/**
*首先使用把IP地址分成4个数字:12819923144
*
*把每个数字转换为2进制,如果转换后这个数字对应的二进制数不够8位,在
左侧补0:1100011100101100
*/
count+=n(8*(3-i));
}
}else{
isF=false;
}
if(isF){
console.log(count);
}else{
}
2.素数之积
给定一个32位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
输入描述:一个正整数num,0num=2147483647
输出描述:如果成功找到,以单个空格分割,从小到大输出两个素数,分解失败,请输出-1-1
示例1:
输入
15
输出35
说明:
因数分解后,找到两个素数3和5,使得3*5=15,按从小到大排列后,输出35
示例2:
输入
27
输出
-1-1
说明:
通过因数分解,找不到任何素数,使得他们的乘积为27,输出-1-1
解题思路:
素数:只有1和本身两个约数。对输入值进行分解因子,只有2个因子的符合,其他的都输
出-1-1
代码:
letn=Number(readLine());
letlist=[];
letm=0;
/**
*本题就是求出一个数只有两个因子(1不是素数)
*遍历n求出它所有的因子
*/
while(m!=n){//当n==m时说明已经不能再除了,跳出循环
n=m!=0?m:n;
for(leti=2;iMath.sqrt(n)+1;i++){
if(n%i==0){
m=n/i;//把商作为下次的被除数
list.push(i);//i就是因子
break;
}
}
}
list.push(m);
if(list.length==2){
}else{
-1-
}
3.寻找相同子串
给你两个字符串t和p,要求从t中找到一个和p相同的连续子串,并输出该字串第一
个字符的下标。
输入描述:
输入文件包括两行,分
文档评论(0)