京东前端编程题讨论
第一题: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; }