<!-- 方法一 -->
<script>
function count(str1, str2){
var reg1 = str2.replace(/\?/g, '(0|1)'),
reg = new RegExp(reg1,'g'),
len =str1.length - str2.length + 1,
array = [];
console.log(reg1)
// 改变搜索的起始位置
for(var i = 0; i < len; i++ ){
var arr1 = reg.exec(str1);
if(arr1[0]){
array.push(arr1[0])
}
reg.lastIndex = i + 1;
// console.log(arr1)
}
console.log(array);
if(array[0] === 'undefined'){
return 0; //没有匹配到
}else{
return '正则:' + strNum(array);
}
}
// 去除数组相同的元素
function strNum(array){
array.sort(function(a,b){
return a - b;
})
// console.log(array)
var newArray = [];
newArray.push(array[0])
for(var i = 1, len = array.length; i < len ;i++){
if(array[i] != array[i-1]){
newArray.push(array[i]);
} ;
}
console.log(newArray)
return newArray.length;
}
console.log(count('01010011','???'));
</script>
<!-- 方法二 :2两次for循环 -->
<script>
function count(str1, str2){
var arr1 = str1.split(''),
arr2 = str2.split(''),
len1 = arr1.length,
len2 = arr2.length,
array=[];
for(var i = 0 ; i < len1 - len2 + 1; i++){
var arr3 = arr1.slice(i,len2 + i);
// console.log(arr3);
var flag = true;
for(var j = 0; j < len2 ; j++){
if(arr2[j] != '?' && arr2[j] != arr3[j]){
flag = false;
}
}
if(flag){
array.push(arr3.join(''));
}
}
// console.log(array)
if(array[0] === 'undefined'){
return 0;
}else{
return '2次for循环:' + strNum(array);
}
}
// 去除数组相同的元素
function strNum(array){
array.sort(function(a,b){
return a - b;
})
// console.log(array)
var newArray = [];
newArray.push(array[0])
for(var i = 1, len = array.length; i < len ;i++){
if(array[i] != array[i-1]){
newArray.push(array[i]);
} ;
}
// console.log(newArray)
return newArray.length;
}
console.log(count('01010011','???'));
</script>
统计01串在另一个01串的匹配可能性
猜你喜欢
转载自blog.csdn.net/qq_30422457/article/details/81116674
今日推荐
周排行