Js算法題:統(tǒng)計(jì)一個(gè)字符串中出現(xiàn)次數(shù)最多的字符渗鬼,并統(tǒng)計(jì)次數(shù)

相信大家看到這個(gè)問題刹衫,有可能想到的是類似于以下的答案:

function getmaxObj(str) {
    if (str.length == 1) {
        return str;
    }
    var newObj = {};
    for (var i = 0; i < str.length; i++) {
        if (!newObj[str.charAt(i)])
            newObj[str.charAt(i)] = 1;
        else
            newObj[str.charAt(i)] += 1;
    }
    console.log(newObj )
    var maxObj ={
        maxkey :"",
        maxvalue:0
    }
    for (var k in newObj) {
        if (newObj[k] > maxObj.maxvalue) {
            maxObj.maxvalue = newObj[k];
            maxObj.maxkey = k;
        }
    }
    return maxObj;
}
var result =getmaxObj("zhangpeiyue.com");
// 出現(xiàn)最多的字符:e
console.log("出現(xiàn)最多的字符:"+result.maxkey);
// 出現(xiàn)次數(shù):2
console.log("出現(xiàn)次數(shù):"+result.maxvalue);

但是上面程序有一些小小的問題:如果最多的字符串有多個(gè)的話斟冕,只能統(tǒng)計(jì)出第一個(gè)字符串。例如我要統(tǒng)計(jì)字符串"zhang":

var result =getmaxObj("zhang");
// 出現(xiàn)最多的字符:z
console.log("出現(xiàn)最多的字符:"+result.maxkey);
// 出現(xiàn)次數(shù):1
console.log("出現(xiàn)次數(shù):"+result.maxvalue);

從結(jié)果可以看出缅阳,只統(tǒng)計(jì)出了字符串"z",而其它符合條件的字符串并沒有統(tǒng)計(jì)出來磕蛇,所以這樣有些不科學(xué)。我們可以將代碼優(yōu)化下(不難理解十办,所以我就不注釋啦):

function getmaxObj(str) {
    if (str.length == 1) {
        return str;
    }
    var newObj = {};
    for (var i = 0; i < str.length; i++) {
        if (!newObj[str.charAt(i)])
            newObj[str.charAt(i)] = 1;
        else
            newObj[str.charAt(i)] += 1;
    }
    console.log(newObj )
    var maxObj ={
        maxkey :[],
        maxvalue:0
    }
    for (var k in newObj) {
        if (newObj[k] > maxObj.maxvalue) {
            maxObj.maxvalue = newObj[k];
            maxObj.maxkey = [k];
        }else if(newObj[k] === maxObj.maxvalue)
            maxObj.maxkey.push(k);
    }
    return maxObj;
}
var result =getmaxObj("zhang");
// 出現(xiàn)最多的字符:z秀撇、h、a向族、n呵燕、g
console.log("出現(xiàn)最多的字符:"+result.maxkey.join("、"));
// 出現(xiàn)次數(shù):1
console.log("出現(xiàn)次數(shù):"+result.maxvalue);

歡迎各路大神吐槽件相!

—————END—————
[公眾號回復(fù)“電子書”再扭,送你經(jīng)典前端電子書籍]
喜歡本文的朋友們氧苍,歡迎關(guān)注微信公眾號張培躍,收看更多精彩內(nèi)容

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泛范,一起剝皮案震驚了整個(gè)濱河市让虐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罢荡,老刑警劉巖赡突,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異区赵,居然都是意外死亡惭缰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門笼才,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漱受,“玉大人,你說我怎么就攤上這事患整“菪В” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵各谚,是天一觀的道長紧憾。 經(jīng)常有香客問我,道長昌渤,這世上最難降的妖魔是什么赴穗? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮膀息,結(jié)果婚禮上般眉,老公的妹妹穿的比我還像新娘。我一直安慰自己潜支,他們只是感情好甸赃,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冗酿,像睡著了一般埠对。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裁替,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天项玛,我揣著相機(jī)與錄音,去河邊找鬼弱判。 笑死襟沮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播开伏,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼膀跌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了硅则?” 一聲冷哼從身側(cè)響起淹父,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怎虫,沒想到半個(gè)月后暑认,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡大审,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年蘸际,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徒扶。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粮彤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姜骡,到底是詐尸還是另有隱情导坟,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布圈澈,位于F島的核電站惫周,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏康栈。R本人自食惡果不足惜递递,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啥么。 院中可真熱鬧登舞,春花似錦、人聲如沸悬荣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氯迂。三九已至践叠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囚戚,已是汗流浹背酵熙。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工轧简, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驰坊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓哮独,卻偏偏與公主長得像拳芙,于是被迫代替她去往敵國和親察藐。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容