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