Javascript 重复字母计数

Javascript 重复字母计数,javascript,algorithm,repeat,Javascript,Algorithm,Repeat,我是这里的新生,很抱歉问了一个简单的问题,我正试图解决一个问题,数一数同一个字母 Input:"aabbcde" cause a = 2, b= 2, c= 1 , d =1 , e = 1 Output:"2a2b1c1d1e" or a2b2c1d1e1 这是我未完成的代码,我结巴了 function repeatL(str) { var word = str.split("").sort(); var temp = 0; var i =1; while(i

我是这里的新生,很抱歉问了一个简单的问题,我正试图解决一个问题,数一数同一个字母

Input:"aabbcde"
cause a = 2, b= 2, c= 1 , d =1 , e = 1
Output:"2a2b1c1d1e" or a2b2c1d1e1
这是我未完成的代码,我结巴了

function repeatL(str) {
    var word = str.split("").sort();
    var temp = 0;
    var i =1;
    while(i< word.length){
        if(word[i] === word[i +1]) { 
            //return temp to array of a += 1 ?
        };
    }
}
repeatL("abbbdd"); //output should be a1b3d2

这有可能解决吗

您可以使用一个变量作为结果字符串,从计数变量1开始,然后通过检查前一个字母和实际字母进行迭代。然后计数或将计数移动到带有最后一个字母的结果集。将计数器重置为1,因为实际字母计数为1

最后,用最后一个计数和字母结束结果,因为一个字母没有用计数处理(请记住,您从索引1开始,并且始终查看实际索引前面的字母)

函数重复(str){
var word=str.split(“”.sort(),
计数=1,
i=1,
结果='';
while(iconsole.log(repeatL(['a','ab','bc','d','e'])。join('');//使用加入后的数组
您只需使用
reduce()
构建数组,然后使用
join()
获取字符串

var input=“aabbcde”;
var结果=输入。拆分(“”)。减少(函数(r,e){
var i=r.indexOf(e);
(i!=-1)?r[i-1]+:r.push(1,e)
返回r;
},[])。加入(“”)

log(result)
我将使用一个对象并将每个字符添加为一个键。如果该键存在,则增加该值,否则添加一个新键,值为1

function repeatL(str) {
  var count = {};
  var arr = str.split("");
    str = "";
  for(var i=0;i<arr.length;i++){
    if(count[arr[i]]){
      count[arr[i]] = count[arr[i]]+1;
    }
    else {
       count[arr[i]] = 1;
    }
  }
  for(var key in count){
    str+= key+count[key];
  }
  return str;
}
函数重复(str){
变量计数={};
var arr=str.split(“”);
str=“”;

对于(var i=0;i,以下示例也适用于数组:

函数getFrequency(字符串){ var freq={};
对于(var i=0;i)这个
aabbcdeaaabbeedd
的预期输出是什么?a=5,b=4,c=1,e=3,d=2…所以>>a5b4c1e3d2,为了便于计数,请先排序,对吗?也许您可以将arr转换为类似于arr.join()的字符串。替换(/,/g,”),然后针对它运行代码。您的问题是什么?如果(Array.isArray(obj))obj=obj.join(“”);这有可能解决吗?现在你知道没有什么是不可能的了;p
function repeatL(str) {
  var count = {};
  var arr = str.split("");
    str = "";
  for(var i=0;i<arr.length;i++){
    if(count[arr[i]]){
      count[arr[i]] = count[arr[i]]+1;
    }
    else {
       count[arr[i]] = 1;
    }
  }
  for(var key in count){
    str+= key+count[key];
  }
  return str;
}