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

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

1.leetcode 434.字符串中的单词数

https://leetcode.cn/problems/number-of-segments-in-a-string/

统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

请注意,你可以假定字符串里不包括任何不可打印的字符。

/**

 * @param {string} s

 * @return {number}

 */

var countSegments = function(s) {

   let str=s.trim()

   if(!str){

       return 0

   }

   let arr=str.split(/[ ]+/)

   return arr.length

};

2.leetcode 2047. 句子中的有效单词数

https://leetcode.cn/problems/number-of-valid-words-in-a-sentence/

句子仅由小写字母('a' 到 'z')、数字('0' 到 '9')、连字符('-')、标点符号('!'、'.' 和 ',')以及空格(' ')组成。每个句子可以根据空格分解成 一个或者多个 token ,这些 token 之间由一个或者多个空格 ' ' 分隔。

如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:

仅由小写字母、连字符和/或标点(不含数字)组成。

至多一个 连字符 '-' 。如果存在,连字符两侧应当都存在小写字母("a-b" 是一个有效单词,但 "-ab" 和 "ab-" 不是有效单词)。

至多一个 标点符号。如果存在,标点符号应当位于 token 的 末尾 。

这里给出几个有效单词的例子:"a-b."、"afad"、"ba-c"、"a!" 和 "!" 。

给你一个字符串 sentence ,请你找出并返回 sentence 中 有效单词的数目 。

/**

 * @param {string} sentence

 * @return {number}

 */

var countValidWords = function(sentence) {

        let usearr = []

        let arr = sentence.trim().split(/[ ]+/)

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

            if (arr[i].length > 2 && /^[a-z]+[-]?[a-z]+[,.!]?$/.test(arr[i])) {

                usearr.push(arr[i])

            } else if (arr[i].length === 1 && /^[a-z.,!]/.test(arr[i])) {

                usearr.push(arr[i])

            } else if (arr[i].length === 2 && /^[a-z][a-z,.!]$/.test(arr[i])) {

                usearr.push(arr[i])

            }

        }

        return usearr.length

};

3.leetcode 581:最短无序连续子数组

https://leetcode.cn/problems/shortest-unsorted-continuous-subarray/

给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

请你找出符合题意的 最短 子数组,并输出它的长度。

/**

 * @param {number[]} nums

 * @return {number}

 */

var findUnsortedSubarray = function(nums) {

        let sortnums = [...nums]

        let left = 0;

        let right = nums.length - 1

        let lflag=false

        let rflag=false

        sortnums.sort((ab=> a - b)

        if(nums.length===1return 0

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

            if(sortnums[i] === nums[i]&&!lflag){

                left+=1

            }else{lflag=true}

            if(sortnums[nums.length - 1 - i] === nums[nums.length - 1 - i]&&!rflag){

                right-=1

            }else{rflag=true}

            if(rflag&&lflagbreak

        }

    return right>left ? right - left +1:0

};

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

全部评论

相关推荐

面了100年面试不知...:头像换成柯南再试试
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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