当前位置:   article > 正文

简单算法_aaabbbccc算法

aaabbbccc算法

1.给定一个升序数组,如何找到连续的元素,并返回连续元素组成的序列?例如,给定数组[1,2,3,4,6,9,22,23],返回数组[“1->4”,“6”,“9”,“22->23”]

function continuousArray(arr){
	var newArr=[""+arr[0]];
	for(var i=1;i<arr.length;i++){
		newArr.push(""+arr[i]);
		if(arr[i]==arr[i-1]+1&&arr[i]==arr[i+1]-1){
			newArr.pop();
		}
		if(arr[i]==arr[i-1]+1&&arr[i]!=arr[i+1]-1){
			newArr.pop();
			var num=newArr.pop();
			newArr.push(num+"->"+arr[i]);
		}
	}
	return newArr;
}
console.log(continuousArray([1,2,3,4,6,9,22,23]));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2.判断一个串是否在另一个串中有序出现

function checkout(str1,str2){
	var arr1=str1.split("");
	var arr2=str2.split("");
	for(var i=0;i<arr2.length;i++){
		if(arr2[i]==arr1[0]){
			arr1.shift();
		}
	}
	if(arr1.length){
		return false;
	}else{
		return true;
	}
}
console.log(checkout("acb","abcde"));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.删除字符串中出现最少的字符

function deleteWord(str){
	var strArr=str.split("");
	var obj={};
	for(var i=0;i<strArr.length;i++){
		if(obj[strArr[i]]){
			obj[strArr[i]]++;
		}else{
			obj[strArr[i]]=1;
		}
	}
	var arr=[];
	for(var j in obj){
		arr.push(obj[j]);
	}
	arr.sort((a,b)=>a-b);
	for(var x in obj){
		if(obj[x]==arr[0]){
			delete obj[x];
		}
	}		
	return obj;
}	
console.log(deleteWord("abscdsahhsaaa"));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

4.括号匹配问题

function checkout(str){
	var newArr=str.split("");
	var map={'(':-1,')':1,'[','-2',']':2};
	var arr=[];
	for(var i=0;i<newArr.length;i++){
		if(map[newArr[i]]<0){
			arr.push(newArr[i]);
		}else{
			let last=arr.pop();
			if(map[last]+map[newArr[i]]!=0) return false;
		}
	}
	if(arr.length){
		return false;
	}else{
		return true;
	}
}
console.log(checkout('(([])[]]'));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

5.统计字符串中字母的个数

function count(str) {
	let arr=str.split("");
	let obj={};
	for(let i=0;i<arr.length;i++){
		let v=arr[i];
		if(obj[v] && obj[v].value==v){
			obj[v].count= ++obj[v].count;
		}else{
			obj[v]={};
			obj[v].count=1;
			obj[v].value=v;
		}
	}
	for(key in obj){
		console.log(`${obj[key].value}=${obj[key].count} `);					
	}
}
count("aaaabbbccccddfgh");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

6.合并有序数组

let a=[2,6,10,12];
let b=[4,6,12,78];
function merge(a,b){
	let arr=[];
	while(a.length && b.length){
		if(a[0]<=b[0]){
			arr.push(a.splice(0,1)[0]);
		}else{
			arr.push(b.splice(0,1)[0]);
		}
	}
	if(a.length||b.length){
		arr=arr.concat(a,b);
	}
	return arr;
}
console.log(merge(a,b));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

7.数组去重

//第一种
function removeDuplicate1(arr){
	let newArr=[];
	for(let i=0;i<arr.length;i++){
		if(newArr.indexOf(arr[i])==-1){
			newArr.push(arr[i]);
		}
	}
	return newArr;
}
//第二种
function removeDuplicate2(arr){
	return Array.from(new Set(arr));
}
//第三种
function removeDuplicate3(arr){
	let result = arr.reduce((cur,next)=>{
		cur.indexOf(next)!=-1?"":cur.push(next);
		return cur;
	},[]);
	return result;
}
let arr=[9,4,5,2,4,3,2,6,9];
console.log(removeDuplicate3(arr));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

8.数组中有9个互不相等的1-10的数,查找1-10中不再数组中的数

function find(arr){
	for(var i=1;i<=10;i++){
		if(arr.indexOf(i)==-1){
			console.log(i);
			break;
		}
	}
}
var arr=[7,4,5,3,2,8,1,10,6];
find(arr);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

9.给出一个只含有1和0的字符串,求最长的连续1字符串的长度

function count(str){
	let newArr=str.split("0");
	let max=newArr[0].length;
	for(let i=1;i<newArr.length;i++){
		if(newArr[i].length>max){
			max=newArr[i].length;
		}
	}
	console.log(max);
}
let str="11011101011011110";
count(str);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

10.计算n!递归

function Recursive(n){
	if(n<=1){
		return n;
	}
	return n*Recursive(n-1);
}
console.log(Recursive(5));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

11.找出[1000,990000]的所有对称数

function find(a,b){
	var newArr=[];
	for(var i=a;i<=b;i++){
		var num=parseInt(i.toString().split("").reverse().join(""));
		if(i==num){
			newArr.push(i);
		}
	}
	return newArr;
}
console.log(find(1000,990000));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

12.给出字符串输出千分位的格式

function splitStr(str){
	if(str.length<=3) return str;
	//?=exp零宽断言
	str=str.replace(/\w{1,3}(?=(\w{3})+$)/g,(v)=>{
		return v+',';
	});
	return str; 
}
console.log(splitStr("snchdskdskjdksjdkaldjal"));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

13.查询字符串参数

function getQueryStringArgs(){
	var qs=(location.search.length>1?location.search.substring(1):"");
	args={},
	items=qs.length?qs.split("&"):[],
	item=null,
	name=null,
	value=null,
	i=0,
	len=items.length;
	for(i=0;i<len;i++){
		item=items[i].split("=");
		name=decodeURIComponent(item[0]);
		value=decodeURIComponent(item[1]);
		if(name.length){
			args[name]=value;
		}
	}
	return args;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/517461
推荐阅读
相关标签
  

闽ICP备14008679号