资讯专栏INFORMATION COLUMN

列出a,b,c的所有4位数排序可能。如:abca,abcb,abcc,acba(面试题)

why_rookie / 1464人阅读

摘要:朋友面试的时候一道面试题,感觉挺有意思的就来实现下。首先我们来题目的意思是用排个数,然后只能有个数重复,有多少种排法比如要形成这样的位数,我们可以在中插入或者或者达到。我们首先需要知道在不重复的情况下能够组合几种,种模式。

朋友面试的时候一道面试题,感觉挺有意思的就来实现下。

首先我们来题目的意思是用abc排4个数,然后只能有2个数重复,有多少种排法?
比如:abca,abcb,abcc,acba

要形成这样的4位数,我们可以在abc中插入a或者b或者c;达到aabc,abac,abca。
思路有了,下面来看看怎么实现。

我们首先需要知道abc在不重复的情况下能够组合几种,abc,acb,bac,bca,cab,cba;6种模式。

然后遍历原数据abc,依次获取a或b或c,插入到已经的几种混排的方式中国,因为我们要形成4位数,所以我们遍历4次,插入的位置依次为0,1,2,3.

但是因为 abc,在0的位置插入a,和1的位置插入a,都是aabc,所有有些会是重复的,用new Set()来去重。最后输出结果。方法有了下面我们来看看代码怎么实现

//初始变量
let array=[]; //输出数组
let str="abc"; //原数据
let len=4;  //排列的位数
let b=str.split(""); //把原数据变为数组
let cross=conversion(permutate(str)).length; //获取原数据交叉的不重复的数组
使用递归处理字符串有多少种交叉方式
/**
 * 
 * 
 * @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
把数据转化
function conversion(len){
    let result=[];
    for(var i=0;i
for(var e=0;e
console.log(new Set(array));  //去除重复添加的数据
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); //返回数组的长度 36

主要的是思路是在数据中插入一个数据,围绕这个来扩展开来。也希望大家指点错误,最后也希望大家喜欢,可以加入qq群439667347,大家一起讨论,一起进步,后续更新中...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93513.html

相关文章

  • Python 爬虫面试 170 道:2019 版

    摘要:下面代码会存在什么问题,如何改进一行代码输出之间的所有偶数。简述进程之间如何通信多路复用的作用模型的区别什么是并发和并行解释什么是异步非阻塞的作用面试题说说你知道的命令如何查看某次提交修改的内容答案扫码下面的二维码订阅即可获取。 引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不...

    trigkit4 评论0 收藏0
  • 前端 100 问:能搞懂80%请把简历给我

    摘要:解析第题第题为什么的和的中不能做异步操作解析第题第题京东下面代码中在什么情况下会打印解析第题第题介绍下及其应用。尽量减少操作次数。解析第题第题京东快手周一算法题之两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 引言 半年时间,几千人参与,精选大厂前端面试高频 100 题,这就是「壹题」。 在 2019 年 1 月 21 日这天,「壹题」项目正式开始,在这之后每个工...

    Scott 评论0 收藏0
  • 正则表达式(简单易懂篇)

    摘要:又到了跳槽高峰期了,想跳槽的小伙伴们一定已经开始做准备工作了吧,我也不例外,哈哈哈这里花了几天复习正则表达式,写了这篇文章和大家一起回忆回忆这简单易忘的正则吧。 又到了跳槽高峰期了,想跳槽的小伙伴们一定已经开始做准备工作了吧,我也不例外,哈哈哈!这里花了几天复习正则表达式,写了这篇文章和大家一起回忆回忆这简单易忘的正则吧。 正则表达式基本语法 一、创建JavaScript正则(RegE...

    _ipo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<