判斷一個字符串中出現次數最多的字符,並統計次數


案例:

let str = "nininihaoa"; let obj = {}; //定義一個新對象
  //循環遍歷字符串
  for (let i = 0; i < str.length; i++) { // charAt()方法,返回某個指定位置的字符
    let char = str.charAt(i); // char就是對象obj的一個屬性,obj[char]是屬性值,obj[char]控制出現的次數(char是鍵值對中的鍵,obj[char]是值)
    if (obj[char]) { obj[char]++; //次數加1
    } else { obj[char] = 1; //若第一次出現,次數記為1
 } } // 輸出的是完整的對象,記錄着每一個字符及其出現的次數
 console.log(obj); // 遍歷對象,找到出現次數最多的字符的次數
  let max = 0; let maxChar = ""; for (let key in obj) { if (max < obj[key]) { max = obj[key]; // max始終儲存次數最多的那個
      maxChar = key; // 那么對應的字符就是當前的key
 } } console.log("最多的字符是" + maxChar); console.log("出現的次數是" + max);

輸出結果:

609050915513


以上結果中:我們可以清楚的記錄每一個字符出現的次數,當有兩個次數相同的字符時,也可以在對象中清楚的看到。不過還是存在些許不足,不能直接把次數最高的字符同時輸出,這還需要加額外的判斷條件。完美的代碼應如下:

let str = "nininihaoa"; let obj = {}; //定義一個新對象
  //循環遍歷字符串
  for (let i = 0; i < str.length; i++) { // charAt()方法,返回某個指定位置的字符
    let char = str.charAt(i); // char就是對象obj的一個屬性,obj[char]是屬性值,obj[char]控制出現的次數(char是鍵值對中的鍵,obj[char]是值)
    if (obj[char]) { obj[char]++; //次數加1
    } else { obj[char] = 1; //若第一次出現,次數記為1
 } } // 輸出的是完整的對象,記錄着每一個字符及其出現的次數
 console.log(obj); // 遍歷對象,找到出現次數最多的字符的次數
  let max = 0; // let maxChar = "";
  for (let key in obj) { if (max < obj[key]) { max = obj[key]; // max始終儲存次數最多的那個
      // maxChar = key; //那么對應的字符就是當前的key
 } } // console.log("最多的字符是" + maxChar);
  // console.log("出現的次數是" + max);

  // 遍歷對象,找到出現次數最多的字符和其次數
  for (let key in obj) { if (obj[key] == max) {    //對應最多的字符就是當前的key
      //console.log(key);
      console.log("最多的字符是" + key); console.log("出現的次數是" + max); } }

注意:最后一次遍歷(循環)對象的目的是:當符合obj[key] == max條件時,直接把次數最高的字符同時輸出。比較清晰!

輸出結果:

609050915514

友情提示:

用數組(存在缺點,當出現最多的字符不只一個時,只能找到一個)

所以用推薦使用對象!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM