From e1173dd1a57e5aa66930075df7c785907a02076d Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 4 Dec 2024 08:47:40 +0900 Subject: [PATCH 1/5] feat: 217. Contains Duplicate --- contains-duplicate/HC-kang.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 contains-duplicate/HC-kang.rs diff --git a/contains-duplicate/HC-kang.rs b/contains-duplicate/HC-kang.rs new file mode 100644 index 000000000..26e5191a1 --- /dev/null +++ b/contains-duplicate/HC-kang.rs @@ -0,0 +1,12 @@ +impl Solution { + pub fn contains_duplicate(nums: Vec) -> bool { + use std::collections::HashSet; + let mut set = HashSet::new(); + for num in nums { + if !set.insert(num) { + return true; + } + } + false + } +} From 2a25e28ce182082722975007dfc2c4f0e704be77 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Mon, 9 Dec 2024 09:17:24 +0900 Subject: [PATCH 2/5] feat: 125. Valid Palindrome --- valid-palindrome/HC-kang.rs | 65 +++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 valid-palindrome/HC-kang.rs diff --git a/valid-palindrome/HC-kang.rs b/valid-palindrome/HC-kang.rs new file mode 100644 index 000000000..d4e6b2c11 --- /dev/null +++ b/valid-palindrome/HC-kang.rs @@ -0,0 +1,65 @@ +/** + * https://leetcode.com/problems/valid-palindrome + * T.C. O(n) + * S.C. O(n) + */ +impl Solution { + pub fn is_palindrome(s: String) -> bool { + let s: Vec = s + .chars() + .filter(|c| c.is_alphanumeric()) + .map(|c| c.to_ascii_lowercase()) + .collect(); // T.C. O(n), S.C. O(n) + + let mut i = 0; + let mut j = s.len().saturating_sub(1); + + // T.C. O(n) + while i < j { + if s[i] != s[j] { + return false; + } + i += 1; + j -= 1; + } + true + } +} + +/** + * 최적화 + * T.C. O(n) + * S.C. O(1) + */ +impl Solution { + pub fn is_palindrome(s: String) -> bool { + let s = s.as_bytes(); + let (mut left, mut right) = (0, s.len().saturating_sub(1)); + + while (left < right) { + while (left < right && !Self::is_alphanumeric(s[left])) { + left += 1; + } + + while (left < right && !Self::is_alphanumeric(s[right])) { + right -= 1; + } + + if left < right { + if s[left].to_ascii_lowercase() != s[right].to_ascii_lowercase() { + return false; + } + left += 1; + right -= 1; + } + } + + true + } + + fn is_alphanumeric(c: u8) -> bool { + (c >= b'a' && c <= b'z') || + (c >= b'A' && c <= b'Z') || + (c >= b'0' && c <= b'9') + } +} From b3b9e63c933c4655a9f91a9174ea87c434763167 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Mon, 9 Dec 2024 09:18:26 +0900 Subject: [PATCH 3/5] docs: 217. Contains Duplicate --- contains-duplicate/HC-kang.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contains-duplicate/HC-kang.rs b/contains-duplicate/HC-kang.rs index 26e5191a1..9221af734 100644 --- a/contains-duplicate/HC-kang.rs +++ b/contains-duplicate/HC-kang.rs @@ -1,3 +1,8 @@ +/** + * https://leetcode.com/problems/contains-duplicate + * T.C. O(n) + * S.C. O(n) + */ impl Solution { pub fn contains_duplicate(nums: Vec) -> bool { use std::collections::HashSet; From 086c7c50517e0f9bc1cc6199c129d6086705cddd Mon Sep 17 00:00:00 2001 From: HC-kang Date: Mon, 9 Dec 2024 20:04:26 +0900 Subject: [PATCH 4/5] docs: 125. Valid Palindrome --- valid-palindrome/HC-kang.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/valid-palindrome/HC-kang.rs b/valid-palindrome/HC-kang.rs index d4e6b2c11..18a6971da 100644 --- a/valid-palindrome/HC-kang.rs +++ b/valid-palindrome/HC-kang.rs @@ -13,7 +13,7 @@ impl Solution { let mut i = 0; let mut j = s.len().saturating_sub(1); - + // T.C. O(n) while i < j { if s[i] != s[j] { @@ -27,7 +27,7 @@ impl Solution { } /** - * 최적화 + * 최적화 - 문자열을 복사하지 않음 * T.C. O(n) * S.C. O(1) */ From 6a2559c38e81c8b530d4f87dcb2d72d1c6ab7ca7 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Sat, 14 Dec 2024 16:38:48 +0900 Subject: [PATCH 5/5] =?UTF-8?q?test:=20rebase=20=EC=97=86=EC=9D=B4=20?= =?UTF-8?q?=EC=A0=95=EC=83=81=EC=A0=81=EC=9D=B8=20=EC=A0=9C=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- alien-dictionary/HC-kang.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 alien-dictionary/HC-kang.js diff --git a/alien-dictionary/HC-kang.js b/alien-dictionary/HC-kang.js new file mode 100644 index 000000000..ec10f3e9d --- /dev/null +++ b/alien-dictionary/HC-kang.js @@ -0,0 +1 @@ +console.log('hi');