找出字符串中最长最多重复的子串 var myString = 'aaabcdeeeghhhffiooo';function maxRepeactString(str) {//定义一个对象,对象的每个属性是出现连续重复的字符,属性的属性值是该字符重复的个数var res = {};for(var i =0 ,j = i+1;i <str.length;i++){while(str[i]==str[j]){j++;res[str[i]]=j-i;}}return res;}var maxnum =0 ,maxname;var strmore = maxRepeactString(myString);console.log(strmore);//找出第一个最长重复字符...
js分治算法实现大整数相加,算法复杂度为O(n/15)//从字符截取数字 function getMidNum(str,start,len) {if(start+len>0){return +str.substr(start<0?0:start,len);}else{return 0;} } /*js分治算法实现大整数相加,算法复杂度为O(n/15) * 1、整数的精度是Math.pow(2,53),大于 9007199254740992 的可能会丢失精度,所以相加的字符长度为15位。 * */ function bigNumAdd(a,b){let res=;let temp=0;let len1=a.length;let len2=b.leng...
基础算法 一、排序 冒泡排序 //冒泡排序 function bubbleSort(arr) {for(var i = 1, len = arr.length; i < len - 1; ++i) {for(var j = 0; j <= len - i; ++j) {if (arr[j] > arr[j + 1]) {let temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}} }插入排序 //插入排序 过程就像你拿到一副扑克牌然后对它排序一样 function insertionSort(arr) {var n = arr.length;// 我们认为arr[0]已经被排序,所以i从1开始for (var i =...
1、for循环:var a = Hi, my name\s Han Meimei, a SOFTWARE engineer; //for循环 function titleCase(s) { var i, ss = s.toLowerCase().split(/\s+/); for (i = 0; i < ss.length; i++) { ss[i] = ss[i].slice(0, 1).toUpperCase() + ss[i].slice(1); } return ss.join( ); } console.log(titleCase(a)); 2、for循环+replace://for循环+replace function titleCase1(str) { //将字符串分解为数组并将其小写化 v...
第1章 课程导学 对课程整体进行介绍,让您切实感受到前端工程师学习数据结构与算法的必要性。 1-1 课程导学试看 第2章 基础算法之“字符串类” 字符串作为JS最基本的数据类型,掌握好字符串类型的算法题目是学习算法最好的入门阶梯,也是业务开发中最受用的部分之一。 2-1 环境搭建 2-2 反转单词原理讲解 2-3 反转单词代码演示 2-4 计算子串原理讲解试看 2-5 计算子串代码演示 第3章 基础算法之“数组类” 数组是JS世界里必不可少的...
JavaScript版 数据结构与算法 链接:下载地址 提取码:6ctd
新的一年,先给大家整理分享一个简单而又重要的知识点:时间复杂度和空间复杂度。因为在前几篇文章中,提到了时间复杂度,也许有些小伙伴还不清楚。(ps:希望在我上篇文章留言的那位小伙伴别失望哦,慢慢来。)先给大家出个思考题,题目:sum = 1+2+3+...+n ,计算 sum 的值。为什么需要复杂度分析 学习数据结构和算法就是为了解“快”和“省”的问题,也就是如何设计你的代码才能使运算效率更快,占用空间更小。那如何来计算代码...
上一篇--JavaScript 算法之复杂度分析文章中介绍了复杂度的分析,相信小伙伴们对常见代码的时间或者空间复杂度肯定能分析出来了。 思考测试 话不多说,出个题目考考大家,分析下面代码的时间复杂度(ps: 虽然说并不会这么写)function find(n, x, arr) {let ind = -1;for (let i = 0; i < n; i++) {if (arr[i] === x) ind = i;}return ind;} 复制代码上面函数的功能就是查找一个变量 x 是否在 数组 arr 中,如果在的话,返回所在的位...
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。 示例 1:输入: flowerbed = [1,0,0,0,1], n = 1 输出: True 示例 2:输入: flowerbed = [1,0,0,0,1], n = 2 输出: False 代码...
题目描述:下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。移位密码也就是密码中的字母会按照指定的数量来做移位。一个常见的案例就是ROT13密码,字母会移位13个位置。由A ? N, B ? O,以此类推。写一个ROT13函数,实现输入加密字符串,输出解密字符串。所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。基本思路不难,难点在如何跳过特殊符号,比如空格逗号...
题目描述:如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。举例,["hello", "Hello"]应该返回true,因为在忽略大小写的情况下,第二个字符串的所有字符都可以在第一个字符串找到。["hello", "hey"]应该返回false,因为字符串"hello"并不包含字符"y"。["Alien", "line"]应该返回true,因为"line"中所有字符都可以在"Alien"找到。题目提示使用indexOf方法:function mutation(arr) {// 请把你的代码写在这...
1.冒泡排序function bubble_sort(arr) {if (arr.length <= 1) {return arr;}var len = arr.length;for (var i = 0; i < len; i++) {for (var j = 0; j < len - 1; j++) {if (arr[j] > arr[j + 1]) {var temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}return arr; } var arr = [3, 5, 8, 1, 2, 4, 7, 9]; var sort = bubble_sort(arr); console.log(sort);2.快速排序function quick_sort(arr) {if (arr.length <= 1)retu...
题目描述:把一个数组arr按照指定的数组大小size分割成若干个数组块。例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];没什么好说的,自己做出的方法与网络上的差别不大,以下是代码:function chunk(arr, size) {// 请把你的代码写在这里var newarr = [];for (var i = 0; i < arr.length; i+=size){newarr.push(arr.slice(i, i+size));}return newarr; }chunk(["a", "b", "c", "d"], 2);
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型var stack1 = [], stack2=[]; function push(node){stack1.push(node); } function pop(){if(stack2.length){return stack2.pop();}else{if(stack1.length){var len = stack1.length;for(var i=0;i<len;i++){stack2.push(stack1.pop());}return stack2.pop()}else{return null}} }
选择排序 function sort(arr) {for (let i = 0, length = arr.length; i < length; i++) {for (let j = i + 1; j < length; j++) {if (arr[i] < arr[j]) {var temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}return arr; }