Problem
- 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.
Solution 01
function encodeDuplicate(str) {
str = str.toLowerCase();
let obj = {};
let result = '';
for (let i = 0; i < str.length; i++) {
if (obj[str[i]]) {
obj[str[i]] += 1;
} else {
obj[str[i]] = 1;
}
}
for (let j = 0; j < str.length; j++) {
if (obj[str[j]] === 1) {
result += '(';
} else {
result += ')';
}
}
return result;
}
encodeDuplicate('recede'); // ()()()
encodeDuplicate('Success'); // )())())
encodeDuplicate('(( @'); // ))((
encodeDuplicate('abcd'); // ((((
encodeDuplicate('aaaa'); // ))))
encodeDuplicate('ssup'); // ))((
Solution 02
function encodeDuplicate(str) {
str = str.toLowerCase();
let result = '';
for (let i = 0; i < str.length; i++) {
if (str.indexOf(str[i]) === str.lastIndexOf(str[i])) {
result += '(';
} else {
result += ')';
}
}
return result;
}
encodeDuplicate('recede'); // ()()()
encodeDuplicate('Success'); // )())())
encodeDuplicate('(( @'); // ))((
encodeDuplicate('abcd'); // ((((
encodeDuplicate('aaaa'); // ))))
encodeDuplicate('ssup'); // ))((
Solution 03
function encodeDuplicate(str) {
return str.toLowerCase().split('').map((i, index, arr) => (arr.indexOf(i) === arr.lastIndexOf(i) ? '(' : ')')).join('');
}
encodeDuplicate('recede'); // ()()()
encodeDuplicate('Success'); // )())())
encodeDuplicate('(( @'); // ))((
encodeDuplicate('abcd'); // ((((
encodeDuplicate('aaaa'); // ))))
encodeDuplicate('ssup'); // ))((
Solution 04
function encodeDuplicate(str) {
str = str.toLowerCase();
return str.replace(/./g, i => (str.indexOf(i) === str.lastIndexOf(i) ? '(' : ')'));
}
encodeDuplicate('recede'); // ()()()
encodeDuplicate('Success'); // )())())
encodeDuplicate('(( @'); // ))((
encodeDuplicate('abcd'); // ((((
encodeDuplicate('aaaa'); // ))))
encodeDuplicate('ssup'); // ))((