我希望有人帮助我理解几行代码。有人可以帮我解释一下吗?谢谢



我正在对Codesignal执行一个算法。

对于s = "abacabad",输出应为CCD_ 2。

字符串中有两个不重复的字符:"c"one_answers"d"。返回c,因为它首先出现在字符串中。

对于s = "abacabaabacaba",输出应为firstNotRepeatingCharacter(s) = '_'

此字符串中没有不重复的字符。

以下代码:

function firstNotRepeatingCharacter(a) {
let b = {};
let len = a.length;
for (let i = 0; i < len; i++) {
let tmp = a.charAt(i);
if (b[tmp]) {
b[tmp] += 1; //explain here
}
else {
b[tmp] = 1;
}
}
for (var prop in b) {
if (b[prop] == 1) { //explain here
return prop;
}
}
return '_';
}

实际上,在上面的b中是一个对象,其键是字符串的不同字母,这些键的值是字符串中各个letter的计数。

key => letter
value => Count of that letter

tmp将是您正在迭代的字符
if (b[tmp])检查字母是否已添加到对象中。

  • 如果已经存在,则增加计数
  • 否则,将其设置为1

在第二个循环中,if (b[prop] == 1)检查某个字母的计数是否为1。意味着它只在字符串中出现过一次,所以返回字母。

相关内容

最新更新