From c6f76088f39b8572e1520db9a4e1c2fa8eb318fe Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Wed, 16 Apr 2025 13:29:22 +0900 Subject: [PATCH 1/3] valid palindrome solution --- valid-palindrome/froggy1014.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 valid-palindrome/froggy1014.js diff --git a/valid-palindrome/froggy1014.js b/valid-palindrome/froggy1014.js new file mode 100644 index 000000000..dc3ee4947 --- /dev/null +++ b/valid-palindrome/froggy1014.js @@ -0,0 +1,22 @@ +/** + * @param {string} s + * @return {boolean} + */ + +var isPalindrome = function (s) { + const str = s.replace(/[^a-zA-Z0-9]/g, "").toLowerCase(); + let left = 0; + let right = str.length - 1; + + while (left < right) { + if (str[left] !== str[right]) return false; + left++; + right--; + } + + return true; +}; + +console.log(isPalindrome("A man, a plan, a canal: Panama")); +console.log(isPalindrome("race a car")); +console.log(isPalindrome(" ")); From 8e138a4535366d022371caadc8866cfd9995c363 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Wed, 16 Apr 2025 13:35:45 +0900 Subject: [PATCH 2/3] add complexity --- valid-palindrome/froggy1014.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/valid-palindrome/froggy1014.js b/valid-palindrome/froggy1014.js index dc3ee4947..8e0283678 100644 --- a/valid-palindrome/froggy1014.js +++ b/valid-palindrome/froggy1014.js @@ -1,8 +1,5 @@ -/** - * @param {string} s - * @return {boolean} - */ - +// Time Complexity O(n) +// Space Complexity O(n) var isPalindrome = function (s) { const str = s.replace(/[^a-zA-Z0-9]/g, "").toLowerCase(); let left = 0; From 521e92318e5cf08951e650f41692492c9fefd250 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Thu, 17 Apr 2025 13:53:10 +0900 Subject: [PATCH 3/3] add number of 1 bits solution --- number-of-1-bits/froggy1014.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 number-of-1-bits/froggy1014.js diff --git a/number-of-1-bits/froggy1014.js b/number-of-1-bits/froggy1014.js new file mode 100644 index 000000000..08b1bad5c --- /dev/null +++ b/number-of-1-bits/froggy1014.js @@ -0,0 +1,31 @@ + +// Time complexity: O(k) +// Space complexity: O(k) + +/** + * @param {number} n + * @return {number} + */ + +// 문자열 변환을 사용한 풀이 +// 이진수로 변환된 수를 문자열로 변환후 1의 개수를 세는 방법 +// 문자열 변환은 비트 연산자보다 느리지만 이해하기 쉬운 방법 +var hammingWeight = function (n) { + return n.toString(2).split('').filter(b => b === '1').length +} + +// Time complexity: O(1) +// Space complexity: O(1) + +// 비트 연산자를 사용한 풀이 +// 비트 연산자는 이진수로 변환된 수를 비교하는 연산자 +// 자바스크립트 엔진이 숫자를 32비트 정수로 변환후 CPU 수준에서 연산을 수행 +var hammingWeight = function (n) { + let count = 0; + for (let i = 0; i < 32; i++) { + if ((n & (1 << i)) !== 0) { + count++; + } + } + return count; +};