java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值
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递归穷举所有排列组合并找出重复值相关推荐
- java数组找出重复元素及次数_Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置...
面试题查找重复元素并打印重复次数和重复位置,一顿懵逼,回来死磕写下来,打印指定重复次数和最大次数,其他在此基础上可以再更新 package sort; import org.testng.annota ...
- JavaScript 4行代码找出重复出现次数最多的元素及次数
JavaScript 4行代码找出重复出现次数最多的元素及次数 今天遇到的一个面试题,看起来比较简单,解题却用几个循环嵌套,感觉不对劲,后面又想了一个比较优雅的解法,如下: 解题思路 为数组内每个相同 ...
- 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 ...
- 在一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。---(java版)
注:这里需要自己输入要查询的数值,而且如果输入的数值查询到数组里面没有会输出[-1.-1]. 代码部分: public static void main(String[] args) {int [] ...
- 找出重复最多的字符php,javascript获取重复次数最多的字符_javascript技巧
javascript获取重复次数最多的字符 /** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字 ...
- 【100%通过率】华为OD机试真题 Java 实现【找出重复代码】【2022.11 Q4 新题】
所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录
- java 找出重复的数据_java 查找list中重复数据实例详解
java 查找list中重复数据实例详解 需求: 查找一个list集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...
- 华为OD机试题 - 找出重复代码(JavaScript)| 包含代码编写思路
最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...
- 第二版:JAVA对象对比VO对象找出差异值结合swagger-ApiModel无需自定义注解
创建历史记录表存全量 变更前后数据 CREATE TABLE `ltx_change_info` (`ID` varchar(60) NOT NULL COMMENT '主键',`CHANGE_MSG ...
最新文章
- python方向-Python发展的4个方向
- 【代码笔记】iOS-二维码
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(一)视图共性 学习笔记...
- C#字符串常见操作总结详解
- 工作中常用的 6 种设计模式!
- 10 个令人惊喜的 jQuery 插件推荐
- 2022牛客寒假算法基础集训营1 ——H 牛牛看云
- 浅谈服务器使用RAID5磁盘阵列的问题
- MIPS架构之start.s汇编分析
- 零基础学python全彩版答案-零基础学Python(全彩版)
- 【ACL2020】使用问题图生成解决multi-hop复杂KBQA
- 下载python的步骤ios_如何使用 Python 开发 iOS 程序?
- C++学习笔记3:一些错误
- FTP客户端搭建(linux环境)
- android系统解压zip文件,如何在Android手机上解压缩rar / zip文件
- FPGA之JESD204B接口——总体概要 首片
- fishtank 测试 linux,Fishtank fitts:a desktop VR testbed for evaluating 3D pointing techniques
- cat()函数的用法
- (四)双击放大与缩小图片
- CopyOnWrite