[英]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.