我正在使用Codesignal算法。
对于s = "abacabad"
,输出应为
firstNotRepeatingCharacter(a) = 'c'
。
字符串中有2个非重复字符:“ c”和“ 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 '_';
}
答案 0 :(得分:1)
实际上,上面的b
是一个对象,其键是字符串的不同字母,并且这些键的值是字符串中各个字母的计数。
key => letter
value => Count of that letter
tmp
将成为您不断迭代的角色。
if (b[tmp])
检查字母是否已经添加到对象中。
在第二个循环中,if (b[prop] == 1)
检查某个字母的计数是否为1
。表示它仅在字符串中出现一次,因此返回字母。