/*
* @author: laifeipeng
* @date: 2019-02-21 17:50:13
* @last modified by: laifeipeng
* @last modified time: 2019-02-21 18:12:27
*/// 1、判斷回文字串
// 法一
function
palindrome(str)
return rst === str;
}// 法二
function
palindrome2(str)
} return
true;
}// 2、翻轉字串
function
reversestring(str)
// 3、生成指定長度隨機字串
function
randomstring(n)
return rst;
}function
randomstring2(n) , () => str.charat(math.round(math.random() * str.length)));
return arr.join('');
}// 4、統計字串中次數最多字母
function
findmaxduplicatechar(str)
const charobj = {};
for (let i = 0; i < str.length; i++) else
} let maxchar = '';
let maxvalue = 1;
for (const k in charobj)
} return maxchar + ':' + maxvalue;
}function
findmaxduplicatechar(str)
const strarr = [...str];
const charobj = {};
let maxchar = '';
let maxvalue = 0;
strarr.foreach(c =>
})return maxchar + ':' + maxvalue;
}// 5、陣列中最大差值
function
getmaxdiff(arr)
return max - min;
}function
getmaxdiff(arr) )
return max - min;
}function
getmaxdiff(arr)
// 6、陣列去重
// 6.1 filter
function
unique(arr) )
}// 6.2 set
function
unique(arr)
// 7、階乘
// 非遞迴實現
function
factorialize(num)
return rst;
}// 遞迴實現
function
factorialize(num)
// 8、二分查詢(原陣列必須有序,否則不行)
// 下面的實現是針對公升序陣列的
// 非遞迴實現
function
binary_search(arr, target) else
if (target > arr[mid]) else
if (target < arr[mid])
} return
-1;}
// 遞迴實現
function
binary_search2(arr, target) else
if (target > arr[mid]) else
if (target < arr[mid])
} return search(arr, 0, arr.length - 1, target)
}複製**
/*
* @author: laifeipeng
* @date: 2019-02-20 17:36:01
* @last modified by: laifeipeng
* @last modified time: 2019-02-22 12:19:27
*/// 給乙個陣列(其元素不重複),求所有元素相加為某個值的2個元素對的下標對
// eg: [2, 9, 3, 10, 8, 1, 22] 目標值11,有[[0, 1], [2, 4], [3, 5]]
// 本人的實現不僅找出下標組,把對應的元素組也一起返回了,提高函式功能,誰知道後面會不會更改需求呢
function
findnum(arr, target) else
if (a[i] + a[j] > target) else
} // 如果只要下標組,則:return key;
return
}// 上面的演算法實現需要排序陣列,下面介紹乙個不用排序的演算法
function
findnum2(arr, target)
} // 如果只要下標組,則:return key;
return
}// 下面是測試
const arr = [2, 9, 3, 10, 8, 1, 22];
const target = 11;
console.log(findnum(arr, target))
console.log(findnum2(arr, target))
// 複製**
JS面試常見演算法題
學習資料結構與演算法對於工程師去理解和分析問題都是有幫助的。如果將來當我們面對較為複雜的問題,這些基礎知識的積累可以幫助我們更好的優化解決思路。下面羅列在前端面試中經常撞見的幾個問題吧。1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for va...
JS面試常見演算法題
1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for var i 0 i str.length i else console.log n var max 0 var maxchar null for var key in n var mores...
js常見演算法題(一)
1.每個單詞手字母大寫 var capitalizeeveryword str str.replace b a z g,char char.touppercase capitalizeeveryword hello world 複製 2.計算平均數 var calculatedmean arr ar...