前端面試題中有這樣一道比較經典的題目:
找出一串字符串中出現(或者連續出現)最多的字符。
這種題的解法有很多,這里介紹一種思路:巧用正則。
/*@params {string} s 字符串 */
function findSameStrs(s) {
if(typeof s !== "string") return '';
var str = s;
//下面對亂的字符排序,如果題目要求”連續出現”最多字符的話,不用寫 str = s.split('').sort((a,b)=>a.localeCompare(b)).join(''); var reg = /(\w)\1+/g; var arr = str.match(reg); if(arr){
// 將正則匹配到的結果繼續按照字符串的長度排序(從大到小) arr.sort((a,b)=>b.length - a.length);
console.log("出現次數最多的字符是:" + arr[0][0] + "出現:" + arr[0].length + "次") }else{
// 如果正則沒有匹配到的,則表示該字符串沒有重復出現的字符,默認打印字符串第一位 console.log("出現次數最多的字符是:" + s[0], "出現: 1次") } }
打印結果:
1.沒有重復出現的字符:
2.有重復出現的字符
3.連續出現的字符
這道題用正則來解答,是不是比字符串和數組之間各種轉換簡單很多呢。