当前位置: 首页 > Web前端 > HTML

一篇文章带你了解JavaScript中基本算法的“字符串类”

时间:2023-04-02 12:21:09 HTML

作者|杰斯克森来源|达达前端小酒馆1算法能做什么?改善什么?有什么好处?前端同学需要提升编程核心内功,建立健全算法知识体系,基础算法、数据结构、高级算法,由浅入深讲解,深入理解抽象算法。算法面试是大公司前端offer的关键部分。学算法之前先掌握ES6!JestJest是一种需要掌握单元测试的语言,它是一个令人愉快的JavaScript测试框架,专注于简单性。它适用于使用以下项目的项目:Babel、TypeScript、Node、React、Angular、Vue等等!Jest是一个令人愉快的JavaScript测试框架,专注于简单性。它适用于使用以下项目的项目:Babel、TypeScript、Node、React、Angular、Vue等等!零配置Jest旨在在大多数JavaScript项目中开箱即用,无需配置。零配置Jest旨在在大多数JavaScript项目中开箱即用,无需配置。快照进行测试,轻松跟踪大型对象。快照与您的测试一起存在,或者嵌入内联。快照可以与测试一起存在,也可以嵌入内联。isolatedTests通过在它们自己的进程中运行来并行化以最大化性能。IsolatedTests通过在它们自己的进程中运行来并行化以最大化性能。很棒的apiFromittoexpect-Jest将整个工具包集中在一个地方。有据可查,维护良好,很好。很棒的apiFromittoexpect-Jest将整个工具包集中在一个地方。有据可查,维护良好,维护良好。Jest自动化测试的特点:快速安全的代码覆盖率易于模拟基本算法:字符串类、数组类、排序类、递归类、正则类。数据结构:堆、栈、队列、链表、矩阵、二叉树。LearnJest,GettingStarted,使用yarn安装Jest:yarnadd--devjest或使用npmnpminstall--save-devjest编写一个将两个数相加的函数:functionsum(a,b){returna+b;}module.exports=总和;testfileconstsum=require('./sum');//测试我们的加法函数文件test('adds1+2toequal3',()=>{expect(sum(1,2)).toBe(3);});配置package.json{"scripts":{"test":"jest"}}Jest是Facebook推出的测试框架,集成了Mocha、chai、jsdom等功能。安装配置npminstall--save-devjestnpminstall-gjest运行jest命令后,会自动运行项目下的所有.test.js文件和.spec.js文件。jest的配置默认只需要在package.json中配置即可。.将jest操作范围限制在test文件夹内,在package.json中添加"jest"{"testRegex":"/test/.*.test.jsx?$"}。Jest是一个简单易用的测试工具,下面分几个小步骤来实践一下吧。需要创建一个名为sum//sum.jsfunctionsum(value1,value2){returnvalue1+value2;}module.exports=sum;sum-test.js//_tests_/sum-test.jsjest.dontMock('../sum');describe('sum',function(){it('加1+2等于3',function(){varsum=require('../sum');expect(sum(1,2)).toBe(3);});});package.json代码{"scripts":{"test":"jest"}}执行命令"npmtest"或"jest"npminstall--save-devjestnpmruntestJestJest-Testhttps://github.com/huangguang...master分支:gitcheckoutmaster环境搭建dev分支:所有源代码gitcheckoutdiv给定一个整数数组和一个目标值target:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]/***@param{number[]}nums*@param{number}target*@return{number[]}*/varnums=[2,7,11,15],target=9;vartwoSum=function(nums,target){varda=[];for(vari=0;i{returnitem.split('').reverse().join('')})returnresult.join('');};/***@param{string}s*@return{string}*/vars="Let'stakeLeetCodecontest";varreverseWords=function(s){//字符串用空格分隔,保存数组,数组元素的顺序就是单词的顺序//字符串变量数组vardaArray=s.split('');//将字符串用空格分隔成一个数组for(vari=0;i{//returnitem.split('').reverse().join('')//})//returnresult.join('');};优雅代码:returnstr.split('').map(item=>{returnitem.split('').reverse().join('')}).join('');Stringmethod:String.prototype.splitString.prototype.matchArraymethodArray.prototype.mapArray.prototype.reverseArray.prototype.join给定一个字符串s,计算一个具有相同数字的字符串中全0的0和1的非空(连续)子串的个数所有1都是组合的重复出现的子串,它们的出现次数都被计算在内。vars="00110011"curlen和prelen分别记录当前数和前半数出现的次数/***@param{string}s*@return{number}*/vars="00110011"varcountBinarySubstrings=function(s){让结果=0;//curLen和preLen分别记录当前数出现的次数和前半数出现的次数letcurLen=1;//当前数字letpreLen=0;//下一个数for(leti=0;i=curLen){result+=1;}}返回结果;};示例2:输入:“10101”输出:4解释:有4个子串:“10”、“01”、“10”、“01”,它们具有相同数量的连续1和0。上面的屏幕截图是一个有效的子字符串。数字串。??别忘了留下学习的足迹【点赞+收藏+评论】AuthorInfo:【作者】:Jeskson【原创公众号】:达达前端小酒馆。【福利】:公众号回复“信息”,送自学资料大礼包(进群分享,想要什么就说,看我有没有)!【转载说明】:转载请注明出处,谢谢合作!~大前端开发,定位前端开发技术栈博客,PHP背景知识点,web全栈技术领域,数据结构与算法,网络原理等以通俗易懂的方式呈现给小伙伴方式。感谢您的支持,感谢您的厚爱!!!如本账号内容有问题(例如:涉及版权或其他问题),请及时联系我们进行整改,我们会尽快处理。请喜欢它!因为您的认可/鼓励是我写作最大的动力!欢迎来到达达的CSDN!这是一个有品质有态度的博客