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

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

1. 华为机试HJ59 找出字符串中第一个只出现一次的字符

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

找出字符串中第一个只出现一次的字符

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()) {

        const maphash = new Map()

        let val = ''

        let flag = true

        for (let i = 0i < line.lengthi++) {

            val = maphash.get(line[i]) ? maphash.set(line[i], maphash.get(line[i]) + 1) : maphash.set(line[i], 1)

        }

        for (const [keyvalueof val.entries()) {

            if (value === 1) {

                flag = false

                console.log(key)

                break

            } else {

                falg = true

            }

        }

        if (flag) {

            console.log(-1)

        }

    }

}()

2. 华为机试HJ58 输入n个整数,输出其中最小的K个

https://www.nowcoder.com/questionTerminal/69ef2267aafd4d52b250a272fd27052c

输入n个整数,找出其中最小的k个整数并按升序输出

输入:

第一行输入两个整数n和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 (line = await readline()) {

        let str = await readline()

        let narr = line.split(' ')

        let arr = str.split(' ').sort((ab=> a - b)

        let result=[]

        for (let i = 0i < Number(narr[1]); i++) {

            result.push(arr[i])

        }

        console.log(result.join(' '))

    }

}()

3. 华为机试HJ81 字符串字符匹配

https://www.nowcoder.com/questionTerminal/22fdeb9610ef426f9505e3ab60164c93

判断短字符串S中的所有字符是否在长字符串T中全部出现。

请注意本题有多组样例输入。

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 (shortstr = await readline()) {

        let longstr = await readline()

        let flag = shortstr.split('').every(item => longstr.includes(item))

        console.log(flag)

    }

}()

4. 华为机试HJ26 字符串排序

https://www.nowcoder.com/questionTerminal/5190a1db6f4f4ddb92fd9c365c944584

描述

编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。

如,输入: By?e 输出: Be?y

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 arr = []

        let enarr = str.split(/[^a-zA-Z]/g).join('').split('')

        enarr.sort((ab=> {

            return a.toLowerCase().charCodeAt(0) - b.toLowerCase().charCodeAt(0)

        })

        for (let i = 0i < str.lengthi++) {

            if (/[^a-zA-Z]/.test(str[i])) {

                arr[i] = str[i]

            }

        }

        for (let i = 0i < str.lengthi++) {

            arr[i] = arr[i] !== undefined ? arr[i] : enarr.shift()

        }

        console.log(arr.join(''))

    }

}()

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

全部评论

相关推荐

在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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