有三道编程题,前面好像是12道选择,和8道不定选,之后是三道笔试,后面的编程也不难,但是建议一定要提前熟悉赛码或者是牛客的编程接口,要不然主题程序会写但是不会写接口,那就太心塞了。
第一道编程题:
找出字符串中出现最多的字母并打印出来:
假如输入str='aaabbbbbbbc';
输出的是b
答案:
// 58第一题
var str = 'aaaabbbbbcc';
var o = {};
var zm = 0;
for (var i = 0; i < str.length; i++) {
zm = str[i];
if (!o[zm]) {
//第一次放进去
o[zm] = 1;
} else {
o[zm]++;
}
}
var max_key = 0;
var max_num = 0;
for (key in o) {
if (max_num < o[key]) {
max_num = o[key];
max_key = key;
}
}
console.log(max_key);
第二道编程:
最大公共字符前缀:
输入:strs = "flower,flow,flight"
输出:fl
答案:
// 58 第二题
// var str = readline();
var strs = "flower,flow,flight"
var arr = strs.split(',');
var longPrefix = function(strs) {
var dfs = (a, j) => {
for (var i = 0, res = []; i < a.length; i++) {
if (a[i] === strs[j][i]) {
res.push(a[i])
} else {
break;
}
}
return res.length && strs[++j] !== undefined ? dfs(res, j) : res.join('')
}
return strs.length === 1 ? strs[0] : dfs(strs[0] && strs[0].split('') || [], 1)
}
console.log(longPrefix(arr));
第三道编程题是数字相消,就是58,85还有就是5588,这种可以消除,类似于消消乐吧
忘记具体的题目是什么了,我当时也没推出规律来,后来交卷以后同学说,推出的规律好像是
f(n)=3f(n-1)-1
找到规律,这就使用递归实现就可以了。
// 58第三题
var num = read_line();
function jumpFloor(number) {
if (number == 1) {
return 1
}
if (number == 2) {
return 2
} else {
return jumpFloor(number - 1) * 3 - 1;
}
}
Console.log(jumpFloor(num));