//判断是否是回文
function checkPalindrom(str) {
return str === str.split('').reverse().join('')
}
let demo1 = checkPalindrom('mamam')
console.log(demo1) //true
//数组去重
function unique1(arr) {
return Array.from(new Set(arr))
}
let arr = [1, 13, 24, 11, 11, 14, 1, 2]
let demo2 = unique1(arr)
console.log(demo2) //[1, 13, 24, 11, 14, 2]
function unique2(arr) {
let obj = {}, newArr = []
for (let key in arr) {
if (!obj[arr[key]]) {
obj[arr[key]] = arr[key]
newArr.push(arr[key])
}
}
return newArr
}
let demo3 = unique2(arr)
console.log('demo3', demo3) // "demo3",[1, 13, 24, 11, 14, 2]
// 统计一个字符串出现最多的字母
let str = 'afjghdfraaaasdenas'
function findMaxDuplicateChar(str) {
if (str.length == 1) {
return str;
}
let charObj = {};
for (let index = 0; index < str.length; index++) {
if (!charObj[str.charAt(index)]) {
charObj[str.charAt(index)] = 1
} else {
charObj[str.charAt(index)] += 1
}
}
//遍历查找最大的值的序号
let maxValue = '', maxCount = 0
for (let key in charObj) {
if (charObj[key] > maxValue) {
maxValue = key
maxCount = charObj[key]
}
}
return {
charObj,
maxValue,
maxCount
}
}
let demo4 = findMaxDuplicateChar(str)
console.log('demo4', '最大项是:' + demo4.maxValue, '最大的次数是:' + demo4.maxCount) //"demo4","最大项是:a","最大的次数是:6"
//冒泡排序
let arr1 = [11, 3, 2, 4, 5,]
function bubbleSort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
//外层和内层的比较
if (arr[i] > arr[j]) {
let temp = arr[i]
//把外层的值赋值为小的,小的在前面,大的在后面
arr[i] = arr[j]
arr[j] = temp
}
}
}
return arr
}
let demo5 = bubbleSort(arr1)
console.log('demo5', demo5) //"demo5",[2, 3, 4, 5, 11]
//快速排序
function qSort(arr) {
if (arr.length <= 1) {
return arr;
}
let leftArr = [], rightArr = []
let q = arr[0]
for (let i = 1; i < arr.length; i++) {
if (arr[i] < q) {
leftArr.push(arr[i])
} else {
rightArr.push(arr[i])
}
}
//递归实现
return [].concat(qSort(leftArr), [q], qSort(rightArr))
}
let demo6 = qSort(arr1)
console.log('demo6', demo6) //"demo6",[2, 3, 4, 5, 11]
//不借助变量,实现交换
function swap(a, b) {
b = b - a
a = a + b
b = a - b
return [a, b]
}
let demo7 = swap(3, 4)
console.log('demo7', demo7) // "demo7",[4, 3]
//生成斐波那契数组的方法
function fab(n) {
let arr = [], i = 0
while (i < n) {
if (i <= 1) {
arr.push(1)
}else{
arr.push(arr(n-1)+arr(n))
}
i++
}
return arr
}
let demo8 = fab(9)
console.log('demo8',demo8)
console