實現一個算法,尋找字符串中出現次數最少的、并且首次出現位置最前的字符。如cbaacfdeaebb,符合要求的是f,因為他只出現了一次(次數最少)。并且比其他只出現一次的字符(如d)首次出現的位置最靠前。下面是我的寫法,小弟沒學過數據結構與算法,半路出家,基礎不好,寫的太爛了,效率無比低下,希望有各位大大能夠給出一些更好的寫法。我的寫法:var str = "cbaacfdeaebb";var arr = str.split('');// 各元素以及對應出現的次數var res = arr.reduce(function (obj, key, index, arr) { if(obj.hasOwnProperty(key)) { obj[key] ++; } else { obj[key] = 1; } return obj;}, {}); // 次數組成的數組var indexArr = []; for(var prop in res) { indexArr.push(res[prop]); }// 找出出現次數最少的數var minTimes = Math.min.apply(null,indexArr);// 出現次數最少元素的數組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