簡體   English   中英

JavaScript:如何計算字符串中的重復字母並在其后立即輸出數字?

[英]JavaScript: How to count repetitive letters in a string and output the numbers right after?

我正在嘗試為字符串aaabbccccddd顯示類似a3b2c4d3的輸出。

我嘗試了下面的代碼,但沒有得到想要的結果。

 var countLetters = "aaabbccccddd"; console.log("countLetters.length --->" + countLetters.length); var countNumberLetter = 0; var i; var a; for (i = 0; i < countLetters.length; i++) { if (countLetters[i] == countLetters[i + 1]) { countNumberLetter = countNumberLetter + 1; } } console.log("countNumberLetter--------->" + countLetters[i] + countNumberLetter); 

使用兩個循環。 使用外部while來循環字符串。 只要遇到新字母,只要這些字母屬於同一序列,就可以使用for循環來遞增計數。 完成后,將外部計數器( i )遞增到下一個字母:

 var countLetters = "aaabbccccddd"; var result = ''; var i = 0; while (i < countLetters.length) { // iterate until current letter, and counted letter are not equal, increment count for (var count = 1; countLetters[i] === countLetters[i + count]; count++) {} // add current letter and count to string result += countLetters[i] + count; i += count; // increment outer counter - i } console.log(result); 

另一個使用String.match()和正則表達式來獲取字母序列數組的解決方案。 然后每個序列映射到字母+計數,並將它們連接回字符串:

 var countLetters = "aaabbccccddd"; var result = countLetters.match(/(\\w)\\1+/g) // match sequences of the same letter .map((s) => s[0] + s.length) // map each sequence to letter with count .join(''); // join back to a string console.log(result); 

var hashMap = {};
var countLetters = "aaabbccccddd";
countLetters.split("").forEach((letter) => {
    if(!hashMap[letter]) {
        hashMap[letter] = 0;
    }
    hashMap[letter] = hashMap[letter]+1;
})
var string ='';
for(var i in hashMap) {
    var val = hashMap[i];
    string += i + val;
}

console.log("countNumberLetter--------->",string);
const object = {};
const string = "aaabbccccddd";

// To iterate over string
for(let i = 0; i < string.length; i++){
    // if the object has that alphabet just increment it 
    if(object.hasOwnProperty(string.charAt(i))){   
        ++object[string.charAt(i)]; 
    }else{
        // else create a key to the new alphabet and give it a value 1
        object[string.charAt(i)] = 1;
    }
}

let finalString = "";

// To iterate over the object
for(let key in object){
    finalString += key;  // concatenate the key  
    finalString += object[key];  // concatenate the value 
} 

console.log(finalString);

我的解決方案有兩個循環,一個循環遍歷字符串並存儲字母,然后在對象中計數(您也可以使用hashmap)。 第二個循環是遍歷對象,以便我們可以制作所需的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM