Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中重复字符的字符串压缩计数_Javascript - Fatal编程技术网

javascript中重复字符的字符串压缩计数

javascript中重复字符的字符串压缩计数,javascript,Javascript,如果我有一个字符串a12c56a1b5,那么out应该是a13b5c56,因为字符a重复了两次,所以a12变成了a13 我试过这个: function stringCompression (str) { var output = ''; var count = 0; for (var i = 0; i < str.length; i++) { count++; if (str[i] != str[i+1]) { output += str[i] +

如果我有一个字符串a12c56a1b5,那么out应该是a13b5c56,因为字符a重复了两次,所以a12变成了a13

我试过这个:

function stringCompression (str) {
  var output = '';
  var count = 0;
  for (var i = 0; i < str.length; i++) {
    count++;
    if (str[i] != str[i+1]) {
      output += str[i] + count;
      count = 0;
    }
  }
  console.log(output); // but it returns `a11121c15161a111b151` instead of `a13b5c56`
}

使用正则表达式提取单词字符和数字。保留对象映射res以跟踪和汇总以下数字。排序并转换回字符串

例如,str=a12c56a1b5的循环迭代流的for:

c='a',n='12' res['a']=+n=12+res['a']=未定义| | 0=0 或ie:res['a']=12+0 c='c',n='56' res['c']=56+0 c='a',n='1' res['a']=1+res['a']=12来自迭代113 c='b',n='5' res['b']=5+0 因此,在循环完成后,res={a':13,'c':56,'b':5}

函数字符串压缩str{ //使用以下数字之和构建对象映射 常数res={} str.matchAll/\w+\d+/g的常数[,c,n] res[c]=+n+res[c]| 0 //将对象映射转换回字符串 输出=Object.entriesres 输出.排序[a],[b]=>ab?1:0 output=output.map[a,b]=>`${a}${b}`.加入 console.logoutput;//但它返回'a11121c15161a111b151'而不是'a13b5c56'` }
stringCompression'a12c56a1b5'使用正则表达式提取单词字符和数字。保留对象映射res以跟踪和汇总以下数字。排序并转换回字符串

例如,str=a12c56a1b5的循环迭代流的for:

c='a',n='12' res['a']=+n=12+res['a']=未定义| | 0=0 或ie:res['a']=12+0 c='c',n='56' res['c']=56+0 c='a',n='1' res['a']=1+res['a']=12来自迭代113 c='b',n='5' res['b']=5+0 因此,在循环完成后,res={a':13,'c':56,'b':5}

函数字符串压缩str{ //使用以下数字之和构建对象映射 常数res={} str.matchAll/\w+\d+/g的常数[,c,n] res[c]=+n+res[c]| 0 //将对象映射转换回字符串 输出=Object.entriesres 输出.排序[a],[b]=>ab?1:0 output=output.map[a,b]=>`${a}${b}`.加入 console.logoutput;//但它返回'a11121c15161a111b151'而不是'a13b5c56'` }
stringCompression'a12c56a1b5'之所以发生这种情况,是因为代码正在计算每个元素的出现次数并将其追加,甚至是字符串中的数字

在这部法典中

for (var i = 0; i < str.length; i++) {
count++;
    if (str[i] != str[i+1]) {
      output += str[i] + count;
      count = 0;
    }
}

之所以发生这种情况,是因为代码正在计算每个元素的出现次数并将其追加,甚至是字符串中的数字

在这部法典中

for (var i = 0; i < str.length; i++) {
count++;
    if (str[i] != str[i+1]) {
      output += str[i] + count;
      count = 0;
    }
}

为了防止它要求您按字母顺序排序,我在Object.KeyCountMap和.map之间的整个答案中添加了的排序代码片段。。。。这对我很管用。我尝试使用的整个答案,但它没有通过所有的测试,因为它没有为更长的字符串添加重复的字母。但他的回答确实起了作用。它只需要按字母顺序排序,就可以通过HackerRank中的所有测试用例。我有一个关于编码评估的问题,叫做更好的编码压缩

另外,我还取消了检查的大写字母从的代码,因为这不是我的编码挑战所必需的

我的是这样的:

函数字符串压缩{ var characters=str.match/[a-zA-Z]+/g; 变量计数=str.match/[0-9]+/g; var countMap={}; 对于变量i=0;iab?1:0 .mapkey=>key+countMap[key] .reducea,b=>a+b; console.logoutput; }
stringCompression'a12c56a1b5'如果它要求您按字母顺序对其排序,我在Object.KeyCountMap和.map之间的整个答案中添加了的排序代码片段。。。。这对我很管用。我尝试使用的整个答案,但它没有通过所有的测试,因为它没有为更长的字符串添加重复的字母。但他的回答确实起了作用。它只需要按字母顺序排序,就可以通过HackerRank中的所有测试用例。我有一个关于编码评估的问题,叫做更好的编码压缩

另外,我还取消了检查的大写字母从的代码,因为这不是我的编码挑战所必需的

我的是这样的:

函数字符串压缩{ var characters=str.match/[a-zA-Z]+/g; 变量计数=str.match/[0-9]+/g; var countMap={}; 对于变量i=0;iab?1:0 .mapkey=>key+countMap[key] .reducea,b=>a+b; console.logoutput; }
stringCompression'a12c56a1b5'请添加更多关于您想要实现什么以及为什么输出应该是您提到的内容的详细信息
ed.您正在连接到字符串,而不是添加到数字。您需要使用子字符串或其他方式提取数字,转换为数字,然后添加,然后将其重新插入字符串。@Tushar更新问题您的代码对每个字符进行计数,并对其进行一次计数,然后添加字符,且计数始终为1。您是否将字符作为示例进行计数?如果是,as计数应为2。第二个a后面有一个1,你不应该把它加到第一个a的12后面吗否则,为什么会有1?!?请添加更多关于您想要实现的内容以及为什么输出应该是您提到的内容的详细信息。您是连接到字符串,而不是添加到数字。您需要使用子字符串或其他方式提取数字,转换为数字,然后添加,然后将其重新插入字符串。@Tushar更新问题您的代码对每个字符进行计数,并对其进行一次计数,然后添加字符,且计数始终为1。您是否将字符作为示例进行计数?如果是,as计数应为2。第二个a后面有一个1,你不应该把它加到第一个a的12后面吗否则,为什么会有1?!?这部分不清楚,`[,c,n]`和res[c]=+n+res[c]| 0这部分不清楚,`[,c,n]`和res[c]=+n+res[c]| 0你的答案需要parseIntcounts[i]你的答案需要parseIntcounts[i]