日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

一道百度前端线上笔试题

發(fā)布時間:2024/4/17 HTML 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一道百度前端线上笔试题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

要求:  

輸入兩個字符串??  strA? ?長度 1-50  只能包含 0或者1

         ? strB? ?長度 1-5  ? 可以包含 0或1或?   (? 代表? ? 0? 或者 1)  

例如

strA = '1000100'; strB = '1?';    //strB 可能是 10 也可能是 11
fun(strA,strB);  //===>輸出 2   (就是從頭到尾?遍歷strA? ? ?返回? ?包含? 10?或?11? 的個數(shù) )

?

?

小生不才,方法可能有點笨,下面是我寫的程序(筆試當場?并沒有寫出這么多,字符串包裝類的方法,總記混。。。。)

   var strA = '10101101';var strB = '?????';function fun(strA, strB) {var arrB = []; //存儲strB的所有可能var newArr = []; //當出現(xiàn)?時 用來臨時存儲的 數(shù)組var num = 0; //記錄是不是第一次var acc = 0; //記錄匹配的總次數(shù)var len = strB.length; //strB長度 并且最后strA 包裝類substr方法中 截取長度 var regA = /^[01]{1,50}$/g; //檢測 strA 是否匹配var regB = /^[01\?]{1,5}$/g; //檢測 strB 是否匹配//檢測 輸入的 strA 和 strB 是否比配if (!regA.test(strA)) {console.log('strA 格式 不匹配');return}else{console.log('strA:'+strA);}if (!regB.test(strB)) {console.log('strB 格式不匹配');return;}else{console.log('strB:'+strB);}//得到arrB存儲 strB 的所有可能for (var i = 0; i < strB.length; i++) {if (strB.charAt(i) === '?' && num === 0) { //如果 匹配strB第一位是 ? 添加兩個 到arrB 例如 1? 2?num++;var reg = new RegExp('^([01]{' + i + '})([?]{1})([01?]*)$', 'g');// console.log(reg);arrB.push(strB.replace(reg, function (a, $1, $2, $3) {return $1 + '1' + $3;}));arrB.push(strB.replace(reg, function (a, $1, $2, $3) {return $1 + '0' + $3;}));// console.log(arrB);// strB.replace(/ /,1);// arrB.push} else if (strB.charAt(i) === '?' && num !== 0) { //當匹配的不是第一次的時候 arrB 里面 一定有值的時候 遍歷數(shù)組 中的每一位,//替換數(shù)組中每一位 i 位置? newArr向數(shù)組中push 例如 00 01 10 11 四維 var reg = new RegExp('^([01]{' + i + '})([?]{1})([01?]*)$', 'g');arrB.forEach(val => {// console.log(val);newArr.push(val.replace(reg, function (a, $1, $2, $3) {return $1 + '1' + $3;}));newArr.push(val.replace(reg, function (a, $1, $2, $3) {return $1 + '0' + $3;}));});//arrB存儲 所有strB的可能 始終用 arrB 存儲全部可能 這里 將 newArr克隆給 arrB 然后給newArr 賦值一個空 下一次 ? 時還用他for (var j = 0; j < newArr.length; j++) {arrB[j] = newArr[j];}newArr = [];}else if(strB.charAt(i) !== '?' && num === 0){//如果 匹配strB第一個 不是? arrB 添加一個 strB即可num++;arrB.push(strB);}else{ //如果 匹配strB 不是第一位的地方 也不是 ? arrB 不需要改變 over//沒啥事要干 }}console.log('strB的所有可能:');console.log(arrB);//strA 遍歷 strB中的每一位 有相等的就 +1 arrB.forEach(ele => { for(var i = 0; i < strA.length; i++) { //strA 遍歷數(shù)組 中的每一位 === acc 就加一 var reg = '';if(strA.substr(i,len) === ele){console.log(ele+'匹配成功');acc ++;}}});console.log('strB的可匹配次數(shù):'+acc);return acc;};fun(strA, strB);

輸出結果

?

  感謝瀏覽,您大駕光臨,小編的博客蓬蓽生輝

?

轉(zhuǎn)載于:https://www.cnblogs.com/96weibin/p/8881918.html

總結

以上是生活随笔為你收集整理的一道百度前端线上笔试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。