-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathduplicateEncode.js
More file actions
30 lines (23 loc) · 841 Bytes
/
duplicateEncode.js
File metadata and controls
30 lines (23 loc) · 841 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// The goal of this exercise is to convert a string to a new string where each character in the new string is
// "(" if that character appears only once in the original string,
// or ")" if that character appears more than once in the original string.
// Ignore capitalization when determining if a character is a duplicate.
// EXAMPLES
// "din" => "((("
// "recede" => "()()()"
// "Success" => ")())())"
// "(( @" => "))(("
function duplicateEncode(word){
return word.toLowerCase().split('').map((el, i, arr) => {
return arr.filter(letter => {
return letter == el;
}).length === 1 ? '(' : ')';
}).join('');
}
// OR
function duplicateEncode(word){
return word.toLowerCase().split('')
.map( function (a, i, w) {
return w.indexOf(a) == w.lastIndexOf(a) ? '(' : ')'
}).join('');
}