牛客网华为机试在线训练JavaScript版解答

本文介绍了牛客网的JavaScript编程实战训练,涵盖字符串操作、字符统计、随机数处理、字符串分隔、进制转换、质数因子计算、数值取整、数据处理等多个方面,通过一系列编程题目,帮助读者提升JavaScript编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于js的输入输出见:牛客网在线判题系统使用帮助


1.字符串最后一个单词的长度

题目描述
计算字符串最后一个单词的长度,单词以空格隔开。 
输入描述:
一行字符串,非空,长度小于5000。

输出描述:
整数N,最后一个单词的长度。
var str=readline();
function countStr(str){
    var arr=str.split(' ');
    if(arr.length===1){
        return arr[0].length;
    }
    var t=arr[arr.length-1]
    return t.length;
}
console.log(countStr(str));
2.计算字符个数

题目描述
写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
输入一个有字母和数字以及空格组成的字符串,和一个字符。
输出描述:
输出输入字符串中含有该字符的个数。

var str=readline();
var t=readline();
function fun(str,t){
   
    var str1=str.toLowerCase();
    var t1=t.toLowerCase();
    var count=0;
    for(i in str1){
        if(str1[i]===t1){
            count++
        }

    }
    return count;


}
console.log(fun(str,t))
3.明明的随机数

题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组
Return Value
OutputArray 输出处理后的随机整数
注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。
输入描述:
输入多行,先输入随机整数的个数,再输入相应个数的整数
输出描述:
返回多行,处理后的结果

while(line=readline()){
    var arr=[];
    for(var i=0;i<line;i++){
        arr.push(readline());        
    }
    var tSet=[...new Set(arr)];
    var setSort=tSet.sort(function(a,b){
   
        return a-b;
    })

    for(var j=0;j<setSort.length;j++){
        console.log(setSort[j]);
    }

}
4.字符串分隔

题目描述
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组


1.字符串长度<8,在字符串末尾补802.slice函数的使用
3.对于字符串长度>8,取循环步长为8,调用slice(i,i+8)对字符串进行分割

var q='00000000';
var arr=[];
for(var i=0;i<2;i++){
    arr.push(readline());

}
for(var j=0;j<arr.length;j++){
    if(arr[j].length<=8){
        var t=arr[j]+q;
        console.log(t.slice(0,8)); 
    }else{
        var len=arr[j].length;
        for(var i=0;i<len;i+=8){
            var s=arr[j].slice(i,i+8);
            if(s.length<8){
                var p=s+q;
                console.log(p.slice(0,8));

            }else{
                console.log(s);
            }

        }

    }

}

}
5.进制转换

题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串


var readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    ouput: process.stdout
});
rl.on('line', function(line) {
   
    var output = parseInt(line, 16);
    console.log(output)
})
6.质数因子

题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

var num=readline();
var arr=[];
for(var i=2;i<=num;i++){
    if(num%i==0){
        num=num/i;
        arr.push(i);
        i=1;
    }
}
var result=arr.sort(function(a,b){
   
    return a-b;
}).join(' ')+' '
console.log(result)
7.取近似值

题目描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值

1.Math.round函数的调用
var num=readline();
console.log(Math.round(num));


----------
2.parseInt取整的使用
var num1=readline();
var t=parseInt(num1);
    var p=num1-t;
    if(p>=0.5){
        t+=1
    }
console.log(t);
8.合并表记录

题目描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)

var k=parseInt(readline())
var obj={}
for(var i=0;i<k;i++){
    arr=readline().split(' ').map(function(item){
   
        return parseInt(item);
    });
    //key值相等的,合并value
    if(arr[0] in obj){
        obj[arr[0]]+=arr[1];
    }else{
        obj[arr[0]]=arr[1];
    }
}
var newarr=Object.keys(obj);
for(var i=0;i<newarr.length;i++){
    console.log(newarr[i]+' '+obj[newarr[i]]);
}
9.提取不重复的数字

题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

var str3=readline();
var arr3=str3.split('').reverse()
var arr4=[];
for(var i=0;i<arr3.length;i++){
    if(arr4.indexOf(arr3[i])===-1){
        arr4.push(arr3[i]);
    }

}

console.log(arr4.toString().replace(/,/g,''));
10.字符串个数统计

题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
输入描述:
输入N个字符,字符在ACSII码范围内。
输出描述:
输出范围在(0~127)字符的个数。

//原谅我偷懒了,直接上一道题目的思想,先对字符串去重,然后计算字符串长度
var str3=readline();
var arr3=str3.split('')
var arr4=[];
for(var i=0;i<arr3.length;i++){
    if(arr4.indexOf(arr3[i])===-1){
        arr4.push(arr3[i])
    }

}
console.log(arr4.length);
11.数字颠倒

描述:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出

//这样可以吗
var numInt=readline();
var arr=numInt.split('').reverse();
console.log(arr.toString().replace(/,/g,''));
12.字符串反转

题目描述
写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如:
输入描述:
输入N个字符
输出描述:
输出该字符串反转后的字符串

//和上一题有区别吗
var numInt=readline();
var arr=numInt.split('').reverse();
console.log(arr.toString().replace(/,/g,
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值