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(i console.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;
}