摘要:朋友面試的時(shí)候一道面試題,感覺挺有意思的就來實(shí)現(xiàn)下。首先我們來題目的意思是用排個(gè)數(shù),然后只能有個(gè)數(shù)重復(fù),有多少種排法比如要形成這樣的位數(shù),我們可以在中插入或者或者達(dá)到。我們首先需要知道在不重復(fù)的情況下能夠組合幾種,種模式。
朋友面試的時(shí)候一道面試題,感覺挺有意思的就來實(shí)現(xiàn)下。
首先我們來題目的意思是用abc排4個(gè)數(shù),然后只能有2個(gè)數(shù)重復(fù),有多少種排法?
比如:abca,abcb,abcc,acba
要形成這樣的4位數(shù),我們可以在abc中插入a或者b或者c;達(dá)到aabc,abac,abca。
思路有了,下面來看看怎么實(shí)現(xiàn)。
我們首先需要知道abc在不重復(fù)的情況下能夠組合幾種,abc,acb,bac,bca,cab,cba;6種模式。
然后遍歷原數(shù)據(jù)abc,依次獲取a或b或c,插入到已經(jīng)的幾種混排的方式中國,因?yàn)槲覀円纬?位數(shù),所以我們遍歷4次,插入的位置依次為0,1,2,3.
但是因?yàn)?abc,在0的位置插入a,和1的位置插入a,都是aabc,所有有些會是重復(fù)的,用new Set()來去重。最后輸出結(jié)果。方法有了下面我們來看看代碼怎么實(shí)現(xiàn)
//初始變量 let array=[]; //輸出數(shù)組 let str="abc"; //原數(shù)據(jù) let len=4; //排列的位數(shù) let b=str.split(""); //把原數(shù)據(jù)變?yōu)閿?shù)組 let cross=conversion(permutate(str)).length; //獲取原數(shù)據(jù)交叉的不重復(fù)的數(shù)組使用遞歸處理字符串有多少種交叉方式
/** * * * @param {any} str //"abc" * @returns */ function permutate(str){ var result=[]; if(str.length==1){ return [str] }else{ var preResult=permutate(str.slice(1)); for(var j=0;j把數(shù)據(jù)轉(zhuǎn)化 function conversion(len){ let result=[]; for(var i=0;i for(var e=0;e console.log(new Set(array)); //去除重復(fù)添加的數(shù)據(jù) Set { "a,a,b,c", "a,b,a,c", "a,b,c,a", "b,a,b,c", "a,b,b,c", "a,b,c,b", "c,a,b,c", "a,c,b,c", "a,b,c,c", "b,a,a,c", "b,a,c,a", "b,b,a,c", "b,a,c,b", "c,b,a,c", "b,c,a,c", "b,a,c,c", "b,c,a,a", "b,b,c,a", "b,c,b,a", "b,c,a,b", "c,b,c,a", "b,c,c,a", "a,a,c,b", "a,c,a,b", "a,c,b,a", "a,c,b,b", "c,a,c,b", "a,c,c,b", "c,a,a,b", "c,a,b,a", "c,b,a,b", "c,a,b,b", "c,c,a,b", "c,b,a,a", "c,b,b,a", "c,c,b,a" } console.log(new Set(array).size); //返回?cái)?shù)組的長度 36主要的是思路是在數(shù)據(jù)中插入一個(gè)數(shù)據(jù),圍繞這個(gè)來擴(kuò)展開來。也希望大家指點(diǎn)錯誤,最后也希望大家喜歡,可以加入qq群439667347,大家一起討論,一起進(jìn)步,后續(xù)更新中...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93513.html
摘要:下面代碼會存在什么問題,如何改進(jìn)一行代碼輸出之間的所有偶數(shù)。簡述進(jìn)程之間如何通信多路復(fù)用的作用模型的區(qū)別什么是并發(fā)和并行解釋什么是異步非阻塞的作用面試題說說你知道的命令如何查看某次提交修改的內(nèi)容答案掃碼下面的二維碼訂閱即可獲取。 引言 最近在刷面試題,所以需要看大量的 Python 相關(guān)的面試題,從大量的題目中總結(jié)了很多的知識,同時(shí)也對一些題目進(jìn)行拓展了,但是在看了網(wǎng)上的大部分面試題不...
摘要:解析第題第題為什么的和的中不能做異步操作解析第題第題京東下面代碼中在什么情況下會打印解析第題第題介紹下及其應(yīng)用。盡量減少操作次數(shù)。解析第題第題京東快手周一算法題之兩數(shù)之和給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。 引言 半年時(shí)間,幾千人參與,精選大廠前端面試高頻 100 題,這就是「壹題」。 在 2019 年 1 月 21 日這天,「壹題」項(xiàng)目正式開始,在這之后每個(gè)工...
摘要:又到了跳槽高峰期了,想跳槽的小伙伴們一定已經(jīng)開始做準(zhǔn)備工作了吧,我也不例外,哈哈哈這里花了幾天復(fù)習(xí)正則表達(dá)式,寫了這篇文章和大家一起回憶回憶這簡單易忘的正則吧。 又到了跳槽高峰期了,想跳槽的小伙伴們一定已經(jīng)開始做準(zhǔn)備工作了吧,我也不例外,哈哈哈!這里花了幾天復(fù)習(xí)正則表達(dá)式,寫了這篇文章和大家一起回憶回憶這簡單易忘的正則吧。 正則表達(dá)式基本語法 一、創(chuàng)建JavaScript正則(RegE...
閱讀 2787·2021-11-19 11:30
閱讀 3069·2021-11-15 11:39
閱讀 1793·2021-08-03 14:03
閱讀 1999·2019-08-30 14:18
閱讀 2055·2019-08-30 11:16
閱讀 2169·2019-08-29 17:23
閱讀 2611·2019-08-28 18:06
閱讀 2545·2019-08-26 12:22