如何计算单词中的字符?

问题描述 投票:-4回答:2

基本上,我正在尝试编写使用GGHTTYYYD并返回2GH2T3YD的函数。请注意,数字优先。我正在尝试用javascrript编写它。如何做到这一点?基本上这里是我的代码:

let s = 'GGHTTYYYD';

const count = (str) => {
  let hash = {};
  str.split('').forEach((char) => {
    hash[char] = hash[char] ? (hash[char] += 1) : 1;
  });
  return hash
};

现在我坚持将名为hash的对象转换为字符串并过滤所有“ 1”

javascript
2个回答
1
投票

这是一个python实现,但我认为它很简单。希望对您有所帮助!

def func(st):
# string to be formed
new_st = ""
# current character
curr_char = st[0]
# current character repeat count
curr_char_times = 1
for char in st[1:]:
    # character changed
    if char != curr_char:
        # if times is 1 do not write 1
        if curr_char_times == 1:
            new_st += curr_char
        else:
            new_st += str(curr_char_times)+curr_char
        # return back to initial state
        curr_char = char
        curr_char_times = 1
    else:
        # if character not changed increment times
        curr_char_times += 1
# process the last char
if curr_char_times == 1:
    new_st += curr_char
else:
    new_st += str(curr_char_times)+curr_char
return new_st

1
投票

将JavaScript对象用作地图,然后将其转换为字符串:

let inputStr="GGHTTYYYD"

const freqCount = (str) =>{

    const map={};

    //create a frequency map using a Javascript Object
    for(let c of str){
        map[c] = map[c] ? map[c]+1 : 1;
    }

    let outputStr="";

    for(let key in map){
        //add an if so we don't log 1's, print out the frequency
        if(map[key]!==1){outputStr+=map[key];}
        //add the letter no matter what
        outputStr+=key;
    }

    return outputStr;
}

console.log(freqCount(inputStr));
//2GH2T3YD
© www.soinside.com 2019 - 2024. All rights reserved.