Skip to content

Commit 9100abf

Browse files
committed
Valid Palindrome solution
1 parent c0070c9 commit 9100abf

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

โ€Žvalid-palindrome/acious.ktโ€Ž

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Solution {
2+
fun isPalindrome(s: String): Boolean {
3+
// ๋ฌธ์žฅ์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 20๋งŒ
4+
// ๋ฌธ์ž์—ด์ด ๊ณต๋ฐฑ์ด๋ฉด return true
5+
// for-loop ํ•œํ„ด์— ์–‘์ชฝ ๋์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘. ์–‘์ชฝ index๊ฐ€ ์„œ๋กœ ๊ต์ฐจ๋˜๋ฉด return true
6+
// ๊ฐ๊ฐ char์ด alphanumeric์ด ์•„๋‹ˆ๋ฉด ํ•œ์นธ ๋”์ด๋™.
7+
// ์˜๋ฌธ ๋Œ€๋ฌธ์ž๋ฉด ์˜๋ฌธ ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜.
8+
// - ์–‘์ชฝ ๋์˜ char๋ฅผ ๋น„๊ตํ•ด์„œ ๊ฐ™์œผ๋ฉด ์–‘์ชฝ index๋ฅผ ์ด๋™์‹œํ‚ด.
9+
// - ์–‘์ชฝ ๋์˜ char๋ฅผ ๋น„๊ตํ•ด์„œ ๊ฐ™์ง€์•Š์œผ๋ฉด return false
10+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(n/2)
11+
// ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
12+
if (s.isEmpty()) {
13+
return true
14+
}
15+
16+
var left = 0
17+
var right = s.length - 1
18+
19+
while (left <= right) { // ์„œ๋กœ ๊ต์ฐจํ•˜๊ธฐ ์ „๊นŒ์ง€๋งŒ ๋น„๊ตํ•˜๋ฉด ๋จ (<= ๋Œ€์‹  < ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
20+
21+
// 1. Char๊ฐ€ ์˜๋ฌธ์ž๋‚˜ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธ
22+
if (!s[left].isLetterOrDigit()) {
23+
left += 1
24+
continue
25+
}
26+
27+
if (!s[right].isLetterOrDigit()) {
28+
right -= 1
29+
continue
30+
}
31+
32+
// 2. ๋Œ€์†Œ๋ฌธ์ž ํ†ต์ผ ํ›„ ๋น„๊ต
33+
if (s[left].lowercaseChar() != s[right].lowercaseChar()) {
34+
return false
35+
} else {
36+
left += 1
37+
right -= 1
38+
}
39+
}
40+
41+
return true
42+
}
43+
}

0 commit comments

Comments
ย (0)