實(shí)現(xiàn)一個(gè)算法,尋找字符串中出現(xiàn)次數(shù)最少的、并且首次出現(xiàn)位置最前的字符。如cbaacfdeaebb,符合要求的是f,因?yàn)樗怀霈F(xiàn)了一次(次數(shù)最少)。并且比其他只出現(xiàn)一次的字符(如d)首次出現(xiàn)的位置最靠前。下面是我的寫法,小弟沒學(xué)過數(shù)據(jù)結(jié)構(gòu)與算法,半路出家,基礎(chǔ)不好,寫的太爛了,效率無(wú)比低下,希望有各位大大能夠給出一些更好的寫法。我的寫法:var str = "cbaacfdeaebb";var arr = str.split('');// 各元素以及對(duì)應(yīng)出現(xiàn)的次數(shù)var res = arr.reduce(function (obj, key, index, arr) { if(obj.hasOwnProperty(key)) { obj[key] ++; } else { obj[key] = 1; } return obj;}, {}); // 次數(shù)組成的數(shù)組var indexArr = []; for(var prop in res) { indexArr.push(res[prop]); }// 找出出現(xiàn)次數(shù)最少的數(shù)var minTimes = Math.min.apply(null,indexArr);// 出現(xiàn)次數(shù)最少元素的數(shù)組var eleArr = [];for(var p in res) { if(res[p] === minTimes) { eleArr.push(p); }}console.log(eleArr[0])
做了一題JS面試題,寫的很不好,尋求更好的方法
DIEA
2018-11-14 10:17:07