每日一道算法题(日更~)

177 阅读1分钟

u=13235459,4125519049&fm=253&fmt=auto&app=138&f=JPEG.webp hi大家好,我是fortune,目前呢已经在前端工作了一段时间,虽然是计算机相关专业但是学校没教,所以自学的前端,所以我先解决了自己基础知识薄弱的问题,随着基础知识的提高,我觉得我的算法知识有些欠缺了,所以,就打算记录一下自己算法的学习之路。

5. 字符串分隔(2022.5.9)

描述: 输入一个字符串,请按长度为8拆分每个输入字符串并进行输出; 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述: 连续输入字符串(每个字符串长度小于等于100)

输出描述: 依次输出所有分割后的长度为8的新字符串

let input = 'abchjdgdskjdgaskdjgaks'
 
function out8str (input) {
    var str = input +'00000000';
    for(let i = 8; i < str.length; i += 8) {
          console.log(str.substring(i - 8, i));
     }
}
 
out8str(input)

4. 去掉最低工资和最高工资后的工资平均值(2022.5.8)

描述: 给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。 请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。

var average = function(salary) {
let len = salary.length;
salary.sort((a, b) => a - b)
let sum = 0;
    for(let i=1; i<len-1; i++) {
        sum += salary[i]
    }
    return sum / (len - 2)
};
};

3.在范围内统计奇数的数量(2022.5.8)

描述: 给你两个非负整数 low 和 high 。请你返回 **low **和 **high **之间(包括二者)奇数的数目。

var countOdds = function(low, high) {
return (low % 2 == 0 && high % 2 == 0) ? (high - low) / 2 : Math.floor((high - low) / 2) + 1;
};

2.计算某字符出现次数(2022.5.7)

描述: 写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母) 数据范围:1≤n≤1000

输入描述: 第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符

输出描述: 输出输入字符串中含有该字符的个数。(不区分大小写字母)

解法1
const str = 'ABCabc';
const key = 'A';
(() => {
    const matchReg = new RegExp(`${key}`, 'ig')
    const matchRes = str.match(matchReg) || []
    console.log(matchRes.length)
})()
解法2
const str = 'ABCabc'.toLowerCase();
const key = 'A'.toLowerCase();
 const mast = str.split('')
 console.log(mast.filter(item => item === key).length);

1.字符串最后一个单词的长度(2022.5.7)

描述: 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

输入描述: 输入一行,代表要计算的字符串,非空,长度小于5000。

输出描述: 输出一个整数,表示输入字符串最后一个单词的长度。

// 解法1
const fn = (str) => {
   const arr = str.split(' ');
   console.log(arr[1]);
   return arr[arr.length-1].length
}
 
 const words = 'hello nowcoder'
 
 console.log(fn(words));