JS using a different approach, recursive function
The readable version
function strCompare(str, n, i = 0, c = 0) { const cond = str[i] === n ? c+1 : c; return i < str.length - 1 ? strCompare(str, n, i+1, cond) : cond; }
One line version
const strCompare = (str, n, i = 0, c = 0) => (i < str.length - 1 ? strCompare(str, n, i+1, str[i] === n ? c+1 : c) : str[i] === n ? c+1 : c);
Actually, string[index out of bound] will return undefined so you don't need to check that your index is lower than the length of the string.
string[index out of bound]
undefined
Also, you don't need to keep track of the characters' count if you just return it right in your recursive call.
And you can increment your index right when you access your character for comparison.
const strCount = (string, character, index = 0) => string[index] === undefined ? 0 : string[index++] === character ? 1 + strCount(string, character, index) : strCount(string, character, index);
If you are about the bytes, this makes it for a shorter version of your solution.
const count = (s, c, i = 0) => !s[i] ? 0 : s[i++] === c ? 1 + count(s, c, i) : count(s, c, i);
You are right, thanks!
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
JS using a different approach, recursive function
The readable version
One line version
Actually,
string[index out of bound]
will returnundefined
so you don't need to check that your index is lower than the length of the string.Also, you don't need to keep track of the characters' count if you just return it right in your recursive call.
And you can increment your index right when you access your character for comparison.
If you are about the bytes, this makes it for a shorter version of your solution.
You are right, thanks!