京东前端编程题讨论

第一题:AC,比较简单,不过我写的比较复杂。。。。。

let s=readline().split("");
let count=0;
if(s.length<1||s.length>50) console.log(count);
for(let i=0;i<s.length-1;i++){
    if(s[i]!=s[i+1]){
        count++;
        if(i+1==s.length-1){
            count++;
        }
    }
    if(s[i]==s[i+1]){
        if(i>0){
            if(s[i]!=s[i-1]){
                count++;
            }
        }
    }
}
print(count);

第二题:30%,虽然已经用到动态规划了,不过后面相乘的时候,忘记大数相乘怎么写了。
let n=readline();
n=parseInt(n);
let dp=[];
dp[0]=1;
for(let i=1;i<n;i++){
    let num=i+1;
    for(let j=1;j<=i;j++){
        if(num%j==0){
            num=num/j;
        }
        dp[i]=num;
    }
}
let min=1;
dp.forEach(i=>min=min*i%987654321);
print(min);

第三题:20%,这道题是真的难,比较,不会做,跪求大神教。
只做了一种情况:去掉一个字母

let s=readline().split("");
let count=0;
count+=s.length;
if(isHuiWen(s)&&s.length!=1) {
    count++;
}
for(let i=s.length-1;i>=0;i=i-1){
    let char=s.splice(i,1)[0];
    if(isHuiWen(s)&&s.length!=1) {
        count++;
    }
    s.splice(i,1,char);
}
print(count);

function isHuiWen(str){
    if(!str.length) return false;
    let i=0,j=str.length-1,flag=true;
    while(i<j){
        if(str[i]!=str[j])
            flag=false;
        i++;
        j--
    }
    return flag;
} 

#春招##前端工程师#
全部评论
完了,感觉
点赞 回复 分享
发布于 2018-04-09 21:17
第一题用的和你一样的方法只A了50% 第二题也只跑了30%
点赞 回复 分享
发布于 2018-04-09 21:18
第三题其实就是找出所有回文子串的组合 LeetCode047
点赞 回复 分享
发布于 2018-04-09 21:20
求问第三题XXY为什么是4种? 不应该只有X和XX好Y三种吗
点赞 回复 分享
发布于 2018-04-09 21:50
我也a了两题 第三题只来得及写思路,不知道能不能收到面试邀请
点赞 回复 分享
发布于 2018-04-09 23:03

相关推荐

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