Palindrome Number(숫자 회문)
주어진 숫자를 뒤집었을 때에도 같은 숫자일 때에만 true, 아닐 때에는 false를 반환 시키는 문제이다.
문제 내용
Easy
Given an integer x
, return true
if x
is a palindrome, and false
otherwise.
Example 1:
Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right to left.
Example 2:
Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: x = 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Constraints:
-231 <= x <= 231 - 1
Follow up: Could you solve it without converting the integer to a string?
Java에서 숫자를 뒤집는 방법 중 하나는 숫자를 문자열로 변환하고, 그 문자열을 또 char형 배열로 변환하여 반복문을 통해 뒤집는 것이다.
답안 보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public boolean isPalindrome(int x) {
// 숫자를 문자열로 형변환
String str = String.valueOf(x);
// 변환된 문자열을 다시 char 배열로 형변환
char[] arr = str.toCharArray();
// 뒤집은 결과물을 담을 배열을 하나 선언(기존 배열의 길이와 같게)
char[] arr2 = new char[arr.length];
// 반복문을 통해 배열에 역순으로 요소를 집어넣음
for(int i=0; i<arr.length; i++) {
char temp = arr[i];
arr2[i] = arr[arr.length-i-1];
}
// 뒤집은 배열을 문자열로 변환하여
String str2 = String.valueOf(arr2);
// 같으면 true, 다르면 false를 반환해준다.
if(str.equals(str2)) return true;
else return false;
}
}
값을 int 형으로 다시 변환하여 비교할 시 -기호 때문에 예외가 발생함. 문자열 형태로 비교해야 정확한 비교가 가능.