奇安信笔试编程题-前端
奇安信笔试,前端岗,编程题挺简单的。。。
1.求极大值,就数学概念上的极大值,没啥难度
const nums = read_line().split(' ').map(Number); let arr = []; for (let i = 1; i < nums.length-1; i++) { if (nums[i] >= nums[i + 1] && nums[i] >= nums[i - 1]) { arr.push(nums[i]); } } if (arr.length) { console.log(arr.join(' ')); } else { console.log('-'); }题意里面极大值的存在条件是长度大于等于3,代码直接从1开始到length-1遍历了,最后判断有没有极大值,确定输出格式!
2.正整数的中文表示,输入范围(0,100000),需要格式判断,如‘a123’,输出错误,正常情况返回中文表示,如10080,输出一万零八十。
const arr = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']; const w = ['', '十', '百', '千', '万']; let str = read_line(), num = Number(str); if (str != num.toString() || num >= 100000 || num <= 0) { console.log('错误输入'); } else { let res = '', flag = false;// 判断中间是否存在0 str.split('').map(Number).reverse().forEach((el, i) => { if (i == 0) { if (el != '0') { res = arr[el]; } } else { if (el != 0) { res = `${arr[el]}${w[i]}${flag ? '零' : ''}${res}`; flag = false; } else { flag = true; } } }); // 没处理最后几位是不是0的情况,最后是0就删除 res = res[res.length - 1] == '零' ? res.slice(0, res.length - 1) : res; console.log(res); }第二题感觉还是蛮有意思的,我这个处理的可能不太好!