第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

做了一題JS面試題,寫的很不好,尋求更好的方法

做了一題JS面試題,寫的很不好,尋求更好的方法

DIEA 2018-11-14 10:17:07
實(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])
查看完整描述

1 回答

?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

const less = (x, y) => x.count <= y.count && x.first < y.firstfunction firstSingle (string) {  let map = {}  string.split('')
    .forEach((char, index) => {      if (map[char]) 
        map[char].count++      else
        map[char] = { count: 1, first: index, char }
    })  return Object.values(map).reduce((x, y) => less(x, y) ? x : y).char
}

思路相似,利用Hash Table,并引入了index解決順序問題。
ES2017還沒有正式發(fā)布,Object.values目前還是草案。
重新排個(gè)版:

const less = (x, y) => (x.count <= y.count && x.first < y.first) ? x : y;function firstSingle (string) {
  let map = {}
  string.split('')
        .forEach((char, index) => {
            map[char] ? map[char].count++ : map[char] = { count: 1, first: index, char } 
        });  return Object.values(map).reduce(less).char}


查看完整回答
反對(duì) 回復(fù) 2018-12-08
  • 1 回答
  • 0 關(guān)注
  • 811 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)