去哪儿网,前端母羊生母羊

那个题,有没有大佬解答下前端这两个题
顺便问一下 第二个字符串匹配并排序的排序是何意思?
var arr = ["ykit-config-yo","mykit","fekit","ykit-config-fekit","ykit","mykitcon"];
var n = arr.length;
var suffix = "ykit";
var reg1 = new RegExp(suffix);          //包含
var reg2 = new RegExp("^("+suffix+")");      //前缀
var reg3 = new RegExp("("+suffix+")$");      //后缀
var reg4 = new RegExp("^("+suffix+")$");  //完全
console.log(reg1);  //  /ykit/
console.log(reg2);  //  /^(ykit)/
console.log(reg3);  //  /(ykit)$/
console.log(reg4);  //  /^(ykit)$/

var result = [];  //完全匹配的数组
var pre = [];  //前缀数组
var next =[];  //后缀数组
var main = [];  //包含数组
for(var j=0;j<n;j++){
    if(reg4.test(arr[j])){
        result.push(arr[j]);
    }
    else if(reg2.test(arr[j])){
        pre.push(arr[j]);
    }
    else if(reg3.test(arr[j]))
    {
        next.push(arr[j]);
    }
    else if(reg1.test(arr[j])){
        main.push(arr[j])
    }
}
console.log(main);  //  [ 'mykitcon' ]
console.log(pre);  //  [ 'ykit-config-yo', 'ykit-config-fekit' ]
console.log(next);  //  [ 'mykit' ]
console.log(result);  //  [ 'ykit' ]
result = result.concat(pre.concat(next.concat(main))); // 将所有数组拼接到result后输出
if(result.length == 0 ){
    console.log("error");
}
else{
    for(var k=0;k<result.length;k++){
        console.log(result[k]);
    }
}
//  ykit
//  ykit-config-yo
//  ykit-config-fekit
//  mykit
//  mykitcon

#去哪儿#
全部评论
我今早可能是没吃早饭饿傻了,居然忘记了Reg,试图自己写KMP匹配...
点赞 回复
分享
发布于 2017-09-20 17:18
排序就是符合条件的按字典序输出嘛
点赞 回复
分享
发布于 2017-09-20 17:18
联想
校招火热招聘中
官网直投
第二题有让前缀直接包含的和后缀包含的分开输出么?我记不得了……
点赞 回复
分享
发布于 2017-09-20 22:30
第一题我下来做了下,用队列模拟的,不知道还有没什么别的方法 var arrN = '2 4'.split(' ').map(char => parseInt(char)); var P = 5; var X = 10; var sum = 1; var que = []; que.push(1); while(que.length !== 0) { var birthYear = que.shift(); for (var i = birthYear; i <= Math.min(birthYear + P - 1, X); i++) { if (arrN.indexOf(i + 1 - birthYear) !== -1) { que.push(i); sum++; } } if (X + 1 - birthYear >= P) { sum--; } } console.log(sum);
点赞 回复
分享
发布于 2017-09-20 22:32
n;
点赞 回复
分享
发布于 2017-09-21 12:28
第二个字符串匹配,分别把有前缀和没有前缀的放在两个数组里排序后,再合并。测试用例可以过,不知道有没有啥问题。 function reg(arr){ var len = arr.length, key = arr[len-1]; var myreg1 = new RegExp('^[a-z]+' + key,'i'), //匹配有前缀的 myreg2 = new RegExp('^' + key,i), //匹配没有前缀的 newArr1 = [], newArr2 = []; for(var i = 0;i < len-1;i++){ if(myreg1.test(arr[i])){ newArr1.push(arr[i]); }else if(myreg2.test(arr[i])){ newArr2.push(arr[i]); } } newArr1.sort(); newArr2.sort(); var res = newArr2.concat(newArr1); console.log(res); } var test = ['ykit-config-yo','mykit','fekit','ykit-config-fekit','ykit','ykit']; reg(test);
点赞 回复
分享
发布于 2017-09-21 12:57

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务