Skip to content

Commit 92e634e

Browse files
valid palindrome solution
1 parent 3013ae5 commit 92e634e

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
class SolutionValidPalindrome {
2+
3+
public boolean isPalindrome(String s) {
4+
// ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
5+
// ์˜๋ฌธ์ž์™€ ์ˆซ์ž๋งŒ ๋‚จ๊ธฐ๊ณ  ๋ชจ๋‘ ์ œ๊ฑฐ
6+
// ์•ž๋’ค๋กœ ์ฝ์–ด๋„ ๊ฐ™์€ ๊ฒฝ์šฐ ํŒฐ๋ฆฐ๋“œ๋กฌ
7+
// ์ข…๋ฅ˜ ๋ณ„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•
8+
// ์˜์–ด ๋Œ€๋ฌธ์ž: ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
9+
// ๊ณต๋ฐฑ: ๋ฌด์‹œ
10+
// ์†Œ๋ฌธ์ž, ์ˆซ์ž: ํ†ต๊ณผ
11+
// ๊ทธ ์™ธ: ๋ฌด์‹œ
12+
// ์ข…๋ฃŒ ์กฐ๊ฑด: lt >= rt
13+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(N)
14+
var lt = 0;
15+
var rt = s.length() - 1;
16+
17+
var input = s.toCharArray();
18+
19+
while (lt < rt) {
20+
// ์˜๋ฌธ ๋˜๋Š” ์ˆซ์ž์ผ๋•Œ๊นŒ์ง€ lt++
21+
while(!Character.isLetterOrDigit(input[lt]) && lt < input.length - 1) {
22+
lt++;
23+
}
24+
25+
// ๋Œ€๋ฌธ์ž๋ฉด ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
26+
if (Character.isUpperCase(input[lt])) {
27+
input[lt] = Character.toLowerCase(input[lt]);
28+
}
29+
30+
// ์˜๋ฌธ ๋˜๋Š” ์ˆซ์ž์ผ๋•Œ๊นŒ์ง€ rt--
31+
while(!Character.isLetterOrDigit(input[rt]) && rt > 0) {
32+
rt--;
33+
}
34+
35+
// ๋Œ€๋ฌธ์ž๋ฉด ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
36+
if (Character.isUpperCase(input[rt])) {
37+
input[rt] = Character.toLowerCase(input[rt]);
38+
}
39+
40+
// lt, rt ๋ฒ”์œ„๊ฐ€ ๊ฒน์ณค๊ฑฐ๋‚˜ lt์™€ rt ๊ฐ€ ๋‹ค๋ฅด๋ฉด false ๋ฐ˜ํ™˜
41+
if (lt < rt && input[lt] != input[rt]) {
42+
return false;
43+
}
44+
45+
lt++;
46+
rt--;
47+
}
48+
49+
return true;
50+
}
51+
}

0 commit comments

Comments
ย (0)