[6kyu][fundamentals][strings][array]
https://www.codewars.com/kata/54b42f9314d9229fd6000d9c/solutions/typescript 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.main
parent
e9a72107ed
commit
aeb641e339
@ -0,0 +1,44 @@
|
||||
export function duplicateEncode(word: string) {
|
||||
let res = "";
|
||||
let i = 0;
|
||||
|
||||
while (i < word.length) {
|
||||
const char = word[i];
|
||||
|
||||
const firstIndex = word.indexOf(char)
|
||||
const lastIndex = word.lastIndexOf(char)
|
||||
|
||||
if (firstIndex !== lastIndex) {
|
||||
res += ")"
|
||||
} else {
|
||||
res += "("
|
||||
}
|
||||
|
||||
i++
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
export function duplicateEncode1(word: string) {
|
||||
return word
|
||||
.toLowerCase()
|
||||
.split('')
|
||||
.map((a, _, w) => {
|
||||
return w.indexOf(a) == w.lastIndexOf(a) ? '(' : ')'
|
||||
})
|
||||
.join('')
|
||||
}
|
||||
|
||||
console.log(
|
||||
duplicateEncode("din"), "((("
|
||||
)
|
||||
console.log(
|
||||
duplicateEncode("recede"), "()()()"
|
||||
)
|
||||
console.log(
|
||||
duplicateEncode("Success"), ")())())"
|
||||
)
|
||||
console.log(
|
||||
duplicateEncode("(( @"), "))(("
|
||||
)
|
||||
Loading…
Reference in New Issue