有人可以像我五岁一样解释一下如何计算字符串中有多少个字母而不重复吗?



我知道代码是做什么的,但我仍然不明白,所以我可以自己重复它。如果有人能帮忙,那就太好了!

function strLetterCount(string) {
const characters = {};
let str = "";
for (let character of string) {
characters[character] = characters[character] + 1 || 1;
}
for (let key in characters) {
str += `${key}${characters[key]}`
}
console.log(str);
return str;
}

strLetterCount("taco"); // "t1a1c1o1"
strLetterCount("coconut"); // "c2o2n1u1t1"

因此,如果您按照以下代码片段中的console.log进行操作,您将能够理解代码的工作原理。它的作用是这样的:

有一个空对象characters={}它通过迭代字符串将字符串的每个字符作为其键。在每次迭代中,如果键不存在,则为对象分配键(characterstring(,值分配为 1。如果此键已经存在,则其值只会增加。最后,此对象中的所有key-value对都连接在一起并返回。

function strLetterCount(string) {
const characters = {};
let str = "";
for (let character of string) {
console.log(character)
characters[character] = characters[character] + 1 || 1;
console.log(characters)
}
for (let key in characters) {
str += `${key}${characters[key]}`
}
console.log(str);
return str;
}
strLetterCount("taco"); // "t1a1c1o1"
strLetterCount("coconut"); // "c2o2n1u1t1"

它创建一个对象"字符"来保持每个字符的出现次数; 然后逐个字符循环访问输入字符串,每次递增"字符"对象中的相应计数器。

"字符"对象如下所示:

characters = {
“a”: 11,
“b”: 4,
“d”: 2,
...
}

最后,它逐个键遍历此对象并累加计数。

假设您是 15 岁 - 那么这应该足够:)

// you pass your string here
function strLetterCount(string) {
// this is object that will store letters and counts, like this:
// { "a": 1, "b": 3, "c": 2, ... }
const characters = {};
// this will be resulting string, like "a1b3c2"
let str = "";
// for each letter of `string`, put it in variable `character`
for (let character of string) {
// if `characters` object already has current letter - increase count by one
// otherwise - initialize it with 1
characters[character] = characters[character] + 1 || 1;
}
// for each letter in `characters` object
for (let key in characters) {
// add to resulting `str` letter followed by the number of occurrences 
str += `${key}${characters[key]}`
}
// output result in console
console.log(str);
// return result
return str;
}

strLetterCount("taco"); // "t1a1c1o1"
strLetterCount("coconut"); // "c2o2n1u1t1"

:">有人可以像我五岁一样解释一下,如何在不重复的情况下计算字符串中有多少个字母吗?

当然,很高兴 - 让我们在交互式 IDE 中逐步运行它

隐藏惊喜的诀窍在第一个for(){...}块中:

function strLetterCount( string ) {            // PARAMETER   <string> (IN)
const characters = {};                       // INITIALISED <characters>
let str = "CONTAINS: ";                      // INITIALISED <str>
//----------------------------------------------------------------------------------------------
for (let character of string) {              //  <iterate> over each <string>'s <character>
characters[character] = characters[character] + 1 || 1;
}                                            //     IF <character> already found in <characters> +1-it, IF NOT, store 1 "there"
//----------------------------------------------------------------------------------------------
for (let key in characters) {                //  <iterator> over each <key> in <characters>
str += `${key}:${characters[key]} `        //             append <key>: and an integer count stored during <string> scanning above in <characters[key]>
}
//----------------------------------------------------------------------------------------------
console.log(str);                            //  show the assembled <str> on console
return str;                                  //  return <str>
}
//----------------------------------------------------------------------------------------------
strLetterCount("taco");    // "CONTAINS: t:1 a:1 c:1 o:1 "
strLetterCount("coconut"); // "CONTAINS: c:2 o:2 n:1 u:1 t:1 "
strLetterCount("Can someone explain like I'm five how this counts how many letters are in a string without repeating?");
//                         // "CONTAINS: C:1 a:6 n:8  :17 s:5 o:6 m:3 e:10 x:1 p:2 l:3 i:8 k:1 I:1 ':1 f:1 v:1 h:4 w:3 t:8 c:1 u:2 y:1 r:4 g:2 ?:1 "

最新更新