null

export default {

data() {

return {

resultArr:[]

}

},

mounted(){

this.sss('aaba','abac');

this.sss('a9310990','133990b');

this.sss('vue','fusev');

this.sss('ab3dc','cae3fd');

},

methods:{

sss(s1,s2){

// 列出s1和s2的所有排列组合

let arr1 = this.recursion(s1);

let arr2 = this.recursion(s2);

let resultArr = [];

// for循环遍历出重复值

for (let index = 0; index < arr1.length; index++) {

for (let j = 0; j < arr2.length; j++) {

if (arr1[index] == arr2[j]){

resultArr.push(arr2[j])

}

}

}

// 处理后返回最终结果

resultArr = resultArr.length == 1 ? resultArr.join('') : resultArr

let data = typeof resultArr == "string" ? resultArr : [...new Set(resultArr)];

console.log(s1,s2,' => ', data)

},

// 遍历str的长度,每个字符都进行递归穷举出所有排列组合

recursion(val){

// 两个str都要用到这个数组,所以每次进来都清空

this.resultArr = [];

let valList = val.split('');

let data = [];

for (let index = 0; index < valList.length; index++) {

const element = valList[index];

let tempList = JSON.parse(JSON.stringify(valList))

tempList.splice(0,index+1);

data = this.recursionFn(element,tempList,1);

}

return this.resultArr;

},

recursionFn(val,list,number) {

this.recursionFnFn(val,list,number).then(() => {

if(list.length !== 0) {

// 每次调用数组的第一个,并删除数组的第一个再进行下次递归,直到数组为空,就得到结果

++ number;

let tempList = JSON.parse(JSON.stringify(list))

tempList.splice(0,1);

this.recursionFn(list[0],JSON.parse(JSON.stringify(tempList)),number);

} else {

// 穷举了所有排列组合,去重

this.resultArr = [...new Set(this.resultArr)];

return this.resultArr;

}

});

},

recursionFnFn(val,list,number){

return new Promise((resolve,reject) => {

for (let index = 0; index < list.length; index++) {

// 将每次值过来的val初始值,再遍历+数组所有的值,来形成排列组合

let element = list[index];

let temp = val+element;

this.resultArr.push(temp);

if(list.length !== 0) {

// 如果数组不为空,就递归调用自己继续排列组合

let newCom = new Promise((resolve,reject) => {

// 和上个函数调用它一样(每次调用数组的第一个,并删除数组的第一个再进行下次递归,直到数组为空,就得到结果)

++number;

let tempList = JSON.parse(JSON.stringify(list))

tempList.splice(0,index+1);

this.recursionFnFn(temp,JSON.parse(JSON.stringify(tempList)),number);

resolve();

});

newCom.then(()=>{

});

}

}

resolve()

})

},

}

}

java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值相关推荐

  1. java数组找出重复元素及次数_Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置...

    面试题查找重复元素并打印重复次数和重复位置,一顿懵逼,回来死磕写下来,打印指定重复次数和最大次数,其他在此基础上可以再更新 package sort; import org.testng.annota ...

  2. JavaScript 4行代码找出重复出现次数最多的元素及次数

    JavaScript 4行代码找出重复出现次数最多的元素及次数 今天遇到的一个面试题,看起来比较简单,解题却用几个循环嵌套,感觉不对劲,后面又想了一个比较优雅的解法,如下: 解题思路 为数组内每个相同 ...

  3. Java实现升序排列的整形数组A,元素两两不相等找出A[i]=i的数据

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  4. 在一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。---(java版)

    注:这里需要自己输入要查询的数值,而且如果输入的数值查询到数组里面没有会输出[-1.-1]. 代码部分: public static void main(String[] args) {int [] ...

  5. 找出重复最多的字符php,javascript获取重复次数最多的字符_javascript技巧

    javascript获取重复次数最多的字符 /** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字 ...

  6. 【100%通过率】华为OD机试真题 Java 实现【找出重复代码】【2022.11 Q4 新题】

             所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录

  7. java 找出重复的数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个list集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  8. 华为OD机试题 - 找出重复代码(JavaScript)| 包含代码编写思路

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  9. 第二版:JAVA对象对比VO对象找出差异值结合swagger-ApiModel无需自定义注解

    创建历史记录表存全量 变更前后数据 CREATE TABLE `ltx_change_info` (`ID` varchar(60) NOT NULL COMMENT '主键',`CHANGE_MSG ...

最新文章

  1. python方向-Python发展的4个方向
  2. 【代码笔记】iOS-二维码
  3. 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(一)视图共性 学习笔记...
  4. C#字符串常见操作总结详解
  5. 工作中常用的 6 种设计模式!
  6. 10 个令人惊喜的 jQuery 插件推荐
  7. 2022牛客寒假算法基础集训营1 ——H 牛牛看云
  8. 浅谈服务器使用RAID5磁盘阵列的问题
  9. MIPS架构之start.s汇编分析
  10. 零基础学python全彩版答案-零基础学Python(全彩版)
  11. 【ACL2020】使用问题图生成解决multi-hop复杂KBQA
  12. 下载python的步骤ios_如何使用 Python 开发 iOS 程序?
  13. C++学习笔记3:一些错误
  14. FTP客户端搭建(linux环境)
  15. android系统解压zip文件,如何在Android手机上解压缩rar / zip文件
  16. FPGA之JESD204B接口——总体概要 首片
  17. fishtank 测试 linux,Fishtank fitts:a desktop VR testbed for evaluating 3D pointing techniques
  18. cat()函数的用法
  19. (四)双击放大与缩小图片
  20. CopyOnWrite

热门文章

  1. 先验概率,后验概率,条件概率,贝叶斯
  2. 残差复合正态分布的重要性
  3. 小白给小白详解维特比算法(二)
  4. Python3 try-except、raise和assert解析
  5. LeetCode简单题之最小绝对差
  6. Camera Lens Coating
  7. 多任务训练的模式结构扩散
  8. 2021年大数据Spark(九):Spark On Yarn两种模式总结
  9. ZooKeeper简介和概念知识
  10. Cocos事件监听(JS)