第三天华为机考练习(JavaScript node)

注:华为机试和剑指offer的JavaScript Node的书写方式不同,剑指offer只需学核心代码然后return,华为机试需要自写输入输出,输出console就行。

1.华为机试HJ10字符个数统计

https://www.nowcoder.com/questionTerminal/eb94f6a5b2ba49c6ac72d40b5ce95f50

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

const rl = require("readline").createInterface({ input: process.stdin });

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void async function () {

    // Write your code here

    while(str = await readline()){

        let count=0

        let rankstr=str.split('').sort().join('')

        for(let i=0;i<rankstr.length-1;i++){

            count=rankstr[i] !== rankstr[i+1] ? count+1 : count;

        }

        if(str){

            count++;

        }

        console.log(count)

    }

}()

2.华为机试HJ46截取字符串

https://www.nowcoder.com/questionTerminal/a30bbc1a0aca4c27b86dd88868de4a4a

输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出

const rl = require("readline").createInterface({ input: process.stdin });

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void async function () {

    // Write your code here

    while(str = await readline()){

        let k=Number(await readline())

        let slicestr=str.slice(0,k)

        console.log(slicestr)

    }

}()

3.华为机试HJ60查找组成一个偶数最接近的两个素数

https://www.nowcoder.com/questionTerminal/f8538f9ae3f1484fb137789dec6eedb9

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。

const rl = require("readline").createInterface({ input: process.stdin });

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void async function () {

    // Write your code here

    while(line = await readline()){

        let num=Number(line)/2

        let k=0

        while(num-k){

            if(priNum(num-k)&&priNum(num+k)) break

            k++

        }

        console.log(num-k)

        console.log(num+k)

    }

}()

function priNum (num){

    if(num===2){

        return true

    }

    for(i=2;i<=Math.sqrt(num);i++){

        if(num%i===0){

            return false

        }

    }

    return true

}

4.华为机试HJ40统计字符

https://www.nowcoder.com/questionTerminal/539054b4c33b4776bc350155f7abd8f5

输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。

const rl = require("readline").createInterface({ input: process.stdin });

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void async function () {

    // Write your code here

    while(line = await readline()){

        let eng=line.match(/[a-zA-Z]/g)

        let num=line.match(/[0-9]/g)

        let blo=line.match(/[ ]/g)

        let els=line.match(/[^a-zA-Z0-9 ]/g)

        let elen=eng?eng.length:0

        let nlen=num?num.length:0

        let blen=blo?blo.length:0

        let slen=els?els.length:0

        console.log(elen)

        console.log(blen)

        console.log(nlen)

        console.log(slen)

    }

}()

5.华为机试HJ14 字符串排序

https://www.nowcoder.com/questionTerminal/5af18ba2eb45443aa91a11e848aa6723

给定 n 个字符串,请对 n 个字符串按照字典序排列。

const rl = require("readline").createInterface({ input: process.stdin });

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void async function () {

    // Write your code here

    while(n = await readline()){

        let arr=[]

        while(n){

            n--

            let str=await readline()

            arr.push(str)

        }

        arr.sort().forEach(item=>{

            console.log(item)

        })

    }

}()

6.华为机试HJ5 进制转换

https://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

const rl = require("readline").createInterface({ input: process.stdin });

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void async function () {

    // Write your code here

    while(line = await readline()){

        //方法一:

        // let dec=parseInt(line,16)//2,8,16进制格式的数据转换到10进制数据

        //方法二:

        let dec=Number(line).toString(10)//任何进制之间的转换

        console.log(dec)

    }

}()

每天练习算法题针对华为机考

全部评论

相关推荐

09-22 15:45
门头沟学院 Java
谁给娃offer我给...:我也遇到了,我说只要我通过面试我就去,实际上我根本就不会去😁
点赞 评论 收藏
分享
团子请爱我一次_十月...:不是戈门,干哪来了,这就是java嘛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务