(1)获取字符串的长度

题目描述:
如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1,否则如果字符 Unicode 编码 > 255 则长度为 2
示例1
输入:‘hello world, 牛客’, false
输出:17
解题思路:

function strLength(s, bUnicode255For1) {let length = s.length;if (!bUnicode255For1) {for (let i in s) {if (s.charCodeAt(i)>255) {length++;}}}return length;
}

慎用 JS 中的 for (var index in items) 循环数组项
注意:这里foreach的index表示的是索引,而不是项
for循环语句还可以改为:for (var i=0;i<s.length;i++)

(2)段落标识

题目描述:
请将下面这句话以段落的形式展示在浏览器中——“牛客网是一个专注于程序员的学习和成长的专业平台。”
解题思路:

let p = document.createElement('p')
p.innerText = '牛客网是一个专注于程序员的学习和成长的专业平台。'

(3)查找数组元素位置

题目描述:
找出元素 item 在给定数组 arr 中的位置
示例1
输入:[ 1, 2, 3, 4 ], 3
输出:2
解题思路:

function indexOf(arr, item) {return arr.indexOf(item);
}

(4)移除数组中的元素

描述:
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
示例1
输入:[1, 2, 3, 4, 2], 2
输出:[1, 3, 4]
解题思路:

function remove(arr, item) {let newArray = [];for (let i=0;i<arr.length;i++) {if (arr[i] !== item) {newArray.push(arr[i]);}}return newArray;
}

(5)添加元素

描述:
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
示例1
输入:[1, 2, 3, 4], 10
输出:[1, 2, 3, 4, 10]
解题思路:

function append(arr, item) {let newArray = arr.slice(0);newArray.push(item);return newArray;
}

(6)添加元素

描述:
在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组
示例1
输入:[1, 2, 3, 4], ‘z’, 2
输出:[1, 2, ‘z’, 3, 4]
解题思路:

function insert(arr, item, index) {var newArray = arr.slice(0);newArray.splice(index, 0, item);return newArray;
}

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
语法:

arrayObject.splice(index,howmany,item1,.....,itemX)

(7)正确的函数定义

描述:
请修复给定的 js 代码中,函数定义存在的问题
示例1
输入:true
输出:a

function functions(flag) {if (flag) {function getValue() { return 'a'; }} else {function getValue() { return 'b'; }}return getValue();
}

解题思路:

function functions(flag) {function getValue() {if (flag) {return 'a';} else {return 'b';}}return getValue();
}

(8)返回函数

描述:
实现函数 functionFunction,调用之后满足如下条件:
1、返回值为一个函数 f
2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ', ’
3、所有函数的参数数量为 1,且均为 String 类型
示例1
输入:functionFunction(‘Hello’)(‘world’)
输出:Hello, world
解题思路:

function functionFunction(str) {return f = function (str2) {return str + ', ' + str2;}
}

(9)使用apply调用函数

描述:
实现函数 callIt,调用之后满足如下条件
1、返回的结果为调用 fn 之后的结果
2、fn 的调用参数为 callIt 的第一个参数之后的全部参数
示例1
输入:无
输出:无
解题思路:

function callIt(fn) {return fn.apply(this,[].slice.call(arguments,1));
}

[].slice.call(arguments, 1) 其含义相当于 arguments.slice(1)
但是由于arguments是类数组,实际上并不具有数组的方法,所以不能直接调用slice方法。
call方法可以指定slice函数执行时的this指针以及后面的参数
通过修改this指针的方式,让arguments继承array。然后arguments就可以使用数组中的方法

(10)二次封装函数

描述:
实现函数 partialUsingArguments,调用之后满足如下条件:
1、返回一个函数 result
2、调用 result 之后,返回的结果与调用函数 fn 的结果一致
3、fn 的调用参数为 partialUsingArguments 的第一个参数之后的全部参数以及 result 的调用参数
示例1
输入:无
输出:无
解题思路:

function partialUsingArguments(fn) {var args = [].slice.call(arguments,1);return result = function () {return fn.apply(this,args.concat([].slice.call(arguments)));}
}

(11)二进制转换

描述:
获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
示例1
输入:128, 8
输出:1
解题思路:

function valueAtBit(num, bit) {var snum = num.toString(2);var sbit = snum.charAt(snum.length-bit);return sbit;
}

(12)二进制转换

描述:
将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
示例1
输入:65
输出:01000001
解题思路:

function convertToBinary(num) {var snum = num.toString(2);while(snum.length<8) {snum = '0' + snum;}return snum;
}

(13)属性遍历

描述:
找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)
1、返回数组,格式为 key: value
2、结果数组不要求顺序
示例1
输入:
var C = function() {this.foo = ‘bar’; this.baz = ‘bim’;};
C.prototype.bop = ‘bip’;
iterate(new C());
输出:[“foo: bar”, “baz: bim”]
解题思路:

function iterate(obj) {var ownPropertyArr = [];for (var key in obj) {if (obj.hasOwnProperty(key)) {ownPropertyArr.push(key+': '+obj[key]);}}return ownPropertyArr;
}

(14)检查重复字符串

描述:
给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
示例1
输入:‘rattler’
输出:true
解题思路:

function containsRepeatingLetter(str) {var reg = /([a-zA-Z])\1/;return reg.test(str);
}

([a-zA-Z])是该表达式的第一个分组,\1是匹配第一个分组匹配到的内容,也就是\1引用了第一个()匹配到的内容。即与([a-zA-Z])匹配到的单词重复。
同理,如果是\2,就是匹配第二个()匹配到的内容。

(15)获取指定字符串

描述:
给定字符串 str,检查其是否包含 连续3个数字
1、如果包含,返回最先出现的 3 个数字的字符串
2、如果不包含,返回 false
示例1
输入:‘9876543’
输出:987
解题思路:

function captureThreeNumbers(str) {var n = str.match(/([0-9]){3}/g);if (n == null) {return false;} else {return n[0];}
}

match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。

(16)判断是否符合指定格式

描述:
给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型
示例1
输入:‘800-555-1212’
输出:true
解题思路:

function matchesPattern(str) {return /^\d{3}-\d{3}-\d{4}$/.test(str);
}

【整理】牛客网编程题-前端篇(简单难度)相关推荐

  1. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

  2. 牛客网编程题python_牛客网数据结构练习题

    第一次使用牛客做编程题,刚开始不了解如何输入输出,查了查才知道.我用的是语言是 Javascript v8 6.0.0 readline() 表示得到输入的字符串,如果是多行的话,每readline一 ...

  3. python牛客网编程题_一波优秀的自学编程语言网站

    网课已经开设两三个月了 同学们上网课的效果怎么样呢? 特别是学编程的同学 没有了学校的学习氛围 没有了老师面对面教学指导 你是否为了编程而焦头烂额,生无可恋呢? 没事,现在同学们的福利来啦! 下面是给 ...

  4. python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

    作者:JessyTsui https://www.nowcoder.com/discuss/580721?type=2&order=0&pos=15&page=1&ch ...

  5. 牛客网刷题 入门篇 基础语法

    VL1 四选一多路器 四选一多路器_牛客题霸_牛客网 `timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, ...

  6. 牛客网编程题——合唱团(网易2017)

    这题在编程达人面前应该算是水题,但这算是我第一个做出来的动态规划程序,作为纪念,分享一下.题目链接: https://www.nowcoder.com/practice/661c49118ca2419 ...

  7. 牛客网—编程题(1)牛牛的礼物

    题目描述 众所周知,牛妹有很多很多粉丝,粉丝送了很多很多礼物给牛妹,牛妹的礼物摆满了地板.地板是N\times MN×M的格子,每个格子有且只有一个礼物,牛妹已知每个礼物的体积.地板的坐标是左上角(1 ...

  8. 牛客网编程题python输入输出_牛客网算法题目记录

    车站建设问题 有10^8个村庄排在一条公路上,依次编号为0~10^8-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0. 现在需要建设车站 ...

  9. 牛客网 [编程题]数字和为sum的方法数

    题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行 ...

  10. 牛客网 [编程题]餐馆

    题目描述: 某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数: 有m批客人,每批客人有两个参数:b人数,c预计消费金额. 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消 ...

最新文章

  1. 如何实现后台向前台传数据
  2. 分布式调用跟踪系统的设计和应用
  3. eclipse中的maven build、maven clean、maven install和maven test的区别
  4. EF 拉姆达 linq if else (整理)
  5. Android--pendingIntent Intent
  6. 远程网络安装RHEL5
  7. mysql配置master_mysql 主从配置(master/slave)
  8. BeginPaint和GetDC有什么区别?【转】
  9. C语言:一种高效、易学的编程语言
  10. 3.4 常用数据类型的输入 [原创Excel教程]
  11. MySQL数据库中多表联合查询
  12. cisco 2800路由器密码恢复
  13. 会话管理:Cookie和Session
  14. 82、详解一个交换机能带动多少个网络监控摄像头
  15. 专访清华裘捷中:亚洲高校首个KDD最佳博士论文奖是如何炼成的?
  16. 新彩虹世界密码系统是多少_希望最近的世界密码日是我们需要的最后一个
  17. 2019日本Summer Sonic音乐节攻略(明星阵容)
  18. 高分一号影像处理流程
  19. Linux:NFS服务器
  20. 怎么把ppt文件转换成pdf?解决方法有这几种

热门文章

  1. 永远不要因为这个工作不好而辞职、、、、
  2. vscode 设置指南
  3. 去哪网实习总结:JavaWeb中文传參乱码问题的解决(JavaWeb)
  4. 大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ ItemSelector)
  5. Entlib DAAB映射枚举类型
  6. Selenium 脚本稳定性问题
  7. c#的FileSystemWatcher对象监视文件的变化的事件,无休止的触发事件的解决办法
  8. 马云:员工表现不好,老板要先检讨
  9. 用户登陆进去后,没有权限操作
  10. Spring Security 02