奇安信笔试编程题-前端
奇安信笔试,前端岗,编程题挺简单的。。。
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);
} 第二题感觉还是蛮有意思的,我这个处理的可能不太好! 

