Skip to content

Commit b9db47b

Browse files
valid palindrome 공간복잡도 개선
1 parent a95ca38 commit b9db47b

File tree

1 file changed

+29
-24
lines changed

1 file changed

+29
-24
lines changed

valid-palindrome/jaejeong1.java

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,50 @@ public boolean isPalindrome(String s) {
55
// 영문자와 숫자만 남기고 모두 제거
66
// 앞뒤로 읽어도 같은 경우 팰린드롬
77
// 종류 별 처리 방법
8-
// 영어 대문자: 소문자로 변환
98
// 공백: 무시
109
// 소문자, 숫자: 통과
1110
// 그 외: 무시
1211
// 종료 조건: lt >= rt
13-
// 시간복잡도: O(N), 공간복잡도: O(N)
14-
var lt = 0;
15-
var rt = s.length() - 1;
12+
// 시간복잡도: O(N), 공간복잡도: O(1)
13+
var idxLt = 0;
14+
var idxRt = s.length() - 1;
1615

17-
var input = s.toCharArray();
16+
char charLt;
17+
char charRt;
1818

19-
while (lt < rt) {
20-
// 영문 또는 숫자일때까지 lt++
21-
while(!Character.isLetterOrDigit(input[lt]) && lt < input.length - 1) {
22-
lt++;
23-
}
19+
while (idxLt < idxRt) {
20+
charLt = s.charAt(idxLt);
21+
charRt = s.charAt(idxRt);
2422

25-
// 대문자면 소문자로 변환
26-
if (Character.isUpperCase(input[lt])) {
27-
input[lt] = Character.toLowerCase(input[lt]);
23+
// 영문 또는 숫자일때까지 lt++
24+
while(!Character.isLetterOrDigit(charLt) && idxLt < s.length() - 1) {
25+
idxLt++;
26+
charLt = s.charAt(idxLt);
2827
}
2928

3029
// 영문 또는 숫자일때까지 rt--
31-
while(!Character.isLetterOrDigit(input[rt]) && rt > 0) {
32-
rt--;
30+
while(!Character.isLetterOrDigit(charRt) && idxRt > 0) {
31+
idxRt--;
32+
charRt = s.charAt(idxRt);
3333
}
3434

35-
// 대문자면 소문자로 변환
36-
if (Character.isUpperCase(input[rt])) {
37-
input[rt] = Character.toLowerCase(input[rt]);
38-
}
35+
// 대문자면 소문자로 변환 + lt, rt 범위가 겹쳤거나 lt와 rt 가 다르면 false 반환
36+
if (idxLt < idxRt) {
37+
if (Character.isUpperCase(charLt)) {
38+
charLt = Character.toLowerCase(charLt);
39+
}
40+
41+
if (Character.isUpperCase(charRt)) {
42+
charRt = Character.toLowerCase(charRt);
43+
}
3944

40-
// lt, rt 범위가 겹쳤거나 lt와 rt 가 다르면 false 반환
41-
if (lt < rt && input[lt] != input[rt]) {
42-
return false;
45+
if (charLt != charRt) {
46+
return false;
47+
}
4348
}
4449

45-
lt++;
46-
rt--;
50+
idxLt++;
51+
idxRt--;
4752
}
4853

4954
return true;

0 commit comments

Comments
 (0)