找到數(shù)組中出現(xiàn)最多的字母并給出個(gè)數(shù)以及每一個(gè)所在的位置
出現(xiàn)次數(shù)最多的字符:
出現(xiàn)次數(shù)最多的字符出現(xiàn)的次數(shù):
出現(xiàn)次數(shù)最多的字符的索引:
摘要:剛剛接觸一周的時(shí)間,熟悉了最基本的知識(shí),這是自己面對(duì)的第一個(gè)的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的知識(shí),就有點(diǎn)吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋?zhuān)?qǐng)多多指正。
剛剛接觸JS一周的時(shí)間,熟悉了最基本的js知識(shí),這是自己面對(duì)的第一個(gè)js的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的dom知識(shí),就有點(diǎn)吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋?zhuān)?qǐng)多多指正。
html代碼:
找到數(shù)組中出現(xiàn)最多的字母并給出個(gè)數(shù)以及每一個(gè)所在的位置
出現(xiàn)次數(shù)最多的字符:
出現(xiàn)次數(shù)最多的字符出現(xiàn)的次數(shù):
出現(xiàn)次數(shù)最多的字符的索引:
js部分:
function Maxchar(str) { //定義一個(gè)參數(shù),代表我們傳入一個(gè)數(shù)組或者字符串(字符串本身來(lái)說(shuō)也是一個(gè)數(shù)組) this.str = str || ""; this.maxCharMeta = {}; //一個(gè)存儲(chǔ)提取信息的對(duì)象 } // class_name.prototype.method_name = function(first_argument) { // // body... // }; Maxchar.prototype.parser = function() { //定義一個(gè)解析函數(shù),掛在原型上,所有的實(shí)例都可以使用 var str = this.str; /* objChar= { a:{ char:"a", num:3, indexs:[2,4,6] }, b:{ char:"b", num:1, indexs:[1] } } */ var objChar = {}, //存儲(chǔ)提取的信息 maxCounter = 0; for (var i = 0; i < str.length; i++) { //遍歷以后,obj里面就會(huì)包含輸入字符數(shù)組的每個(gè)字符的信息了。 if (objChar[str[i]]) { //若已存在,更新objChar里對(duì)應(yīng)身str[i]的屬性值 objChar[str[i]].num += 1; objChar[str[i]].indexs.push(i); } else { //若不存在,則代表obj還沒(méi)有存在字符為str[i]的對(duì)象 //定義一個(gè)臨時(shí)對(duì)象 var metaChar = { char: str[i], num: 1, indexs: [i] //第一次出現(xiàn),該字符的索引數(shù)組里面只有一個(gè)元素,即當(dāng)前的i } objChar[str[i]] = metaChar; //將臨時(shí)對(duì)象 賦給obj } // 為了找出最多出現(xiàn)次數(shù)的信息,且不再重復(fù)定義遍歷,就在此for循環(huán)中定義實(shí)現(xiàn) if (maxCounter < objChar[str[i]].num) { //若最大次數(shù)小于當(dāng)前str[i]的num值,就更新 this.maxCharMeta = objChar[str[i]]; maxCounter = objChar[str[i]].num; } } return this; //實(shí)現(xiàn)鏈?zhǔn)降恼{(diào)用 } // 輸出 Maxchar.prototype.maxCharInfo = function() { return this.maxCharMeta; } // 視圖處理 // 定義對(duì)象 var maxCharOut = { inputStr: null, //代表獲取的輸入值 parsedObj: null, //代表解析完成的對(duì)象 init: function() { //執(zhí)行 this.getStrInfo(); //獲取信息 // this.parser(); //位置放錯(cuò)了:在頁(yè)面一刷新的時(shí)候,還沒(méi)有獲取到值,當(dāng)鼠標(biāo)點(diǎn)擊以后,才獲取到值,開(kāi)始解析 }, getStrInfo: function() { //從界面上獲取,利用DOM元素 var inputStr = document.getElementById("inputStr"); var calculateBtn = document.getElementById("calculateBtn"); calculateBtn.onclick = function() { //給button綁定點(diǎn)擊事件 maxCharOut.inputStr = inputStr.value; //在點(diǎn)擊的時(shí)候獲取值 maxCharOut.parser(); //當(dāng)鼠標(biāo)點(diǎn)擊以后,才獲取到值,開(kāi)始解析 maxCharOut.charView(); // 點(diǎn)擊時(shí),調(diào)用結(jié)果輸出函數(shù),即可以頁(yè)面顯示結(jié)果 } }, // 解析/計(jì)算 parser: function() { // var charMeta =new Maxchar(this.inputStr) //傳入的是一個(gè)輸入字符(即輸入框輸入的值) // var charMeta =new Maxchar(this.inputStr).parser() //調(diào)用 // var charMeta =new Maxchar(this.inputStr).parser().maxCharInfo();//輸出 this.parsedObj = new Maxchar(this.inputStr).parser().maxCharInfo(); }, // 輸出,放到頁(yè)面上顯示 charView: function() { //顯示的三個(gè)位置,利用DOM元素 var maxChar = document.getElementById("maxChar"); var maxCounter = document.getElementById("maxCounter"); var strIndex = document.getElementById("strIndex"); //賦值前先進(jìn)行判斷,parsedObj是否存在,不存在代表解析還未完成 if (this.parsedObj) { maxChar.innerHTML = this.parsedObj.char; maxCounter.innerHTML = this.parsedObj.num; strIndex.innerHTML = this.parsedObj.indexs.join(","); //關(guān)于每個(gè)字符的索引數(shù)組,不能直接將數(shù)組輸出,先將其變成字符串 } } }; // 立即執(zhí)行函數(shù) (function() { maxCharOut.init(); })();
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90903.html
摘要:剛剛接觸一周的時(shí)間,熟悉了最基本的知識(shí),這是自己面對(duì)的第一個(gè)的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的知識(shí),就有點(diǎn)吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋?zhuān)?qǐng)多多指正。 剛剛接觸JS一周的時(shí)間,熟悉了最基本的js知識(shí),這是自己面對(duì)的第一個(gè)js的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的do...
摘要:神經(jīng)網(wǎng)絡(luò)以上驗(yàn)證碼識(shí)別都依賴(lài)于字符切分,切分的好壞幾乎直接決定識(shí)別的準(zhǔn)確程度。目前驗(yàn)證碼識(shí)別最先進(jìn)的是谷歌在識(shí)別街景圖像中門(mén)牌號(hào)碼中使用的一套的算法。 最近在一個(gè)爬蟲(chóng)項(xiàng)目中遇到了驗(yàn)證碼,需要機(jī)器自動(dòng)識(shí)別繞過(guò)。剛好與題主的問(wèn)題類(lèi)似,在這里做一些分享。 在網(wǎng)上調(diào)研了資料和文獻(xiàn)后,分別采用OCR識(shí)別和模板庫(kù)匹配方法對(duì)不同類(lèi)型驗(yàn)證碼進(jìn)行了識(shí)別。主要過(guò)程可以分解為三個(gè)步驟:1.圖片清理,2.字符...
摘要:圖片驗(yàn)證碼是目前最常用的一種。神經(jīng)網(wǎng)絡(luò)以上驗(yàn)證碼識(shí)別都依賴(lài)于字符切分,切分的好壞幾乎直接決定識(shí)別的準(zhǔn)確程度。目前驗(yàn)證碼識(shí)別最先進(jìn)的是谷歌在識(shí)別街景圖像中門(mén)牌號(hào)碼中使用的一套的算法。 全自動(dòng)區(qū)分計(jì)算機(jī)和人類(lèi)的圖靈測(cè)試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡(jiǎn)稱(chēng)CAPTCHA),...
摘要:答案使用,申請(qǐng)一個(gè)長(zhǎng)度為類(lèi)型的,每個(gè)位置只表示或,該數(shù)組占用空間約。遍歷億個(gè)數(shù),當(dāng)前數(shù)為,落在區(qū)間,對(duì)應(yīng)。 過(guò)濾100億黑名單 題目 假設(shè)有100億個(gè)URL的黑名單,每個(gè)URL最多占用64B,設(shè)計(jì)一個(gè)過(guò)濾系統(tǒng),判斷某條URL是否在黑名單里。 要求 不高于萬(wàn)分之一的判斷失誤率;額外內(nèi)存不超過(guò)30GB 答案 100億個(gè)64B的URL需要640GB的內(nèi)存,顯然直接存哈希表不合理??紤]布隆過(guò)濾...
閱讀 857·2021-11-22 11:59
閱讀 3272·2021-11-17 09:33
閱讀 2342·2021-09-29 09:34
閱讀 1977·2021-09-22 15:25
閱讀 1987·2019-08-30 15:55
閱讀 1346·2019-08-30 15:55
閱讀 561·2019-08-30 15:53
閱讀 3382·2019-08-29 13:55