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

那个题,有没有大佬解答下前端这两个题
顺便问一下 第二个字符串匹配并排序的排序是何意思?
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
第二个字符串匹配,分别把有前缀和没有前缀的放在两个数组里排序后,再合并。测试用例可以过,不知道有没有啥问题。 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
n;
点赞 回复 分享
发布于 2017-09-21 12:28
第一题我下来做了下,用队列模拟的,不知道还有没什么别的方法 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
第二题有让前缀直接包含的和后缀包含的分开输出么?我记不得了……
点赞 回复 分享
发布于 2017-09-20 22:30
排序就是符合条件的按字典序输出嘛
点赞 回复 分享
发布于 2017-09-20 17:18

相关推荐

不愿透露姓名的神秘牛友
07-09 12:23
转人工😡
门口唉提是地铁杀:五次握手了
点赞 评论 收藏
分享
07-07 12:47
门头沟学院 Java
码农索隆:竟然还真有卡体检报告的
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务