From 2fa4888d31579e325a5b8e2898f47cd055c510cd Mon Sep 17 00:00:00 2001 From: HamSungJun Date: Fri, 9 Jul 2021 19:41:34 +0900 Subject: [PATCH] HamSungJun-1047,1356,1880 --- HamSungJun/Solution_1047.ts | 14 ++++++++++++++ HamSungJun/Solution_1356.ts | 16 ++++++++++++++++ HamSungJun/Solution_1880.ts | 15 +++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 HamSungJun/Solution_1047.ts create mode 100644 HamSungJun/Solution_1356.ts create mode 100644 HamSungJun/Solution_1880.ts diff --git a/HamSungJun/Solution_1047.ts b/HamSungJun/Solution_1047.ts new file mode 100644 index 0000000..4ff4204 --- /dev/null +++ b/HamSungJun/Solution_1047.ts @@ -0,0 +1,14 @@ +function removeDuplicates (s: string): string { + const letterStack: string[] = [] + for (let i = 0; i < s.length; i++) { + const letter = s[i] + if (letter === letterStack[letterStack.length - 1]) { + letterStack.pop() + continue + } + letterStack.push(letter) + } + return letterStack.join('') +}; + +console.log(removeDuplicates('caabbdaabbz')) diff --git a/HamSungJun/Solution_1356.ts b/HamSungJun/Solution_1356.ts new file mode 100644 index 0000000..83353b8 --- /dev/null +++ b/HamSungJun/Solution_1356.ts @@ -0,0 +1,16 @@ +function sortByBits (arr: number[]): number[] { + const numBitsArr = arr.map(num => { + return { + num, + numBits: num.toString(2).split('').filter(bit => bit === '1').length + } + }) + numBitsArr.sort((a, b) => { + if (a.numBits !== b.numBits) { + return Number(a.numBits > b.numBits) - Number(a.numBits < b.numBits) + } else { + return Number(a.num > b.num) - Number(a.num < b.num) + } + }) + return numBitsArr.map(item => item.num) +}; diff --git a/HamSungJun/Solution_1880.ts b/HamSungJun/Solution_1880.ts new file mode 100644 index 0000000..5de5f0c --- /dev/null +++ b/HamSungJun/Solution_1880.ts @@ -0,0 +1,15 @@ +function isSumEqual (firstWord: string, secondWord: string, targetWord: string): boolean { + return wordToNum(firstWord) + wordToNum(secondWord) === wordToNum(targetWord) +}; + +function wordToNum (word: string): number { + let out = '' + for (let i = 0; i < word.length; i++) { + const nextDigit = word[i].charCodeAt(0) - 97 + if (out.length === 0 && nextDigit === 0) { + continue + } + out += nextDigit + } + return +out +}