0
点赞
收藏
分享

微信扫一扫

js基础算法

简单聊育儿 2022-04-07 阅读 55

1.反转字符串

解法一、

思路:从坐标的最大值减减

function b(str){

let res ='', //新建一个变量接受循环值

for(let i=str.length-1;i>=0;i--){ //根据length的最大值向前递减做循环,res接收排列 

res+=str[i]

}
return res
}

b("hello") 得到 //olleh

解法二、

思路:对称比较换位置

function b(str){

let arr =str.split(''); 

let i =0, j=str.length-1;

//    i+j=length-1  j=length-1-i  二者对应关系:对应的不是值,是length长度值
 
while(i<j){

[ arr[i],arr[j] ] =[ arr[j],arr[i] ];

//或者
//let temp =arr[i];
//arr[i]=arr[i];
//arr[j]=temp

i++;

j--;

}
return arr.join('');
}

b("hello") 得到 //olleh

解法三、

思路:es6的reverse方法

function b(str){

return  str.split('').reverse().join('');

//reverse是数组方法,需要转数组  另字符串无法通过index转值

}

b("hello") 得到 //olleh

解法四、剥洋葱

function b(str){

if(!str){   //str.length==0

return '';    // 防止空字符

} else if(str.length==1){

return str; 

}

let  end = str[end] + b(str.slice(1,end)) + str[0]  //采用递归的思想

}

b("hello") 得到 //olleh

2.n的阶乘

解法一、for循环

function a(res){

if(res===0){

return 1 

}else if(

let num = 1;

for(let i = 2;i<= res ;i++){

 num*=i

}

return num

)

}

a(3)  // 得到6

解法二、递归

function b(num){

if(num===0){

return 1

}

return num*b(num-1)

}

举报

相关推荐

0 条评论