반응형
https://leetcode.com/problems/palindrome-number/
1. 2022.01.10 시도
소요시간: 5분(string)
// string
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
String str = x+"";
int p = 0;
int q = str.length() -1;
while(p<=q) {
if (str.charAt(p) == str.charAt(q)) {
p++;
q--;
continue;
}
return false;
}
return true;
}
}
풀이 접근 과정
마이너스는 일단 예외처리 해주고 String으로 만들어서 읽어서 비교하면 끝나겠다.
느낀점
- 공간을 상수만큼만 쓰고 어떻게 할 수 있을까? 고민했는데 솔루션을 보고서 알게되었다. 이런 기막힌 방법이 있다는 것을!! 예전에 리스트로 palindrome을 풀었을 떄처럼 중간을 거꾸로 뒤집는 방법을 해보고 싶었는데 실제로 int에서도 이게 가능하다. 방법은 아래와 같다.
// space: O(1)
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x%10 == 0 && x!=0)) {
return false;
}
int reversed = 0;
while (x> reversed) {
reversed = reversed*10 + x%10;
x = x/10;
}
return x == reversed || x == reversed/10;
}
}
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(112. Path Sum) (0) | 2022.01.16 |
---|---|
.leetcode(7. Reverse Integer) (0) | 2022.01.16 |
.leetcode(226. Invert Binary Tree) (0) | 2022.01.09 |
.leetcode(617. Merge Two Binary Trees) (0) | 2022.01.09 |
.leetcode(589. N-ary Tree Preorder Traversal) (0) | 2022.01.09 |