https://leetcode.com/problems/reverse-integer/
signed 32 비트 정수 x가 주어질 때, 자릿수 뒤집어서 반환하기
32 비트 범위 넘어가면 0 반환
(64비트 정수 저장이 안되는 환경으로 가정 -> 즉, int로 제한 범위 비교 시도시 에러)
public class Solution {
public int Reverse(int x) {
string s = x.ToString();
bool isSigned = false;
if(s[0] == '-')
{
isSigned = true;
s = s.Substring(1, s.Length - 1);
}
if (s.Length > 10) return 0;
StringBuilder sb = new StringBuilder(); // 참조메모리 덜 차지 위함
for(int i = s.Length - 1; i >= 0; i--) //끝자리부터 돌아서 문자열 역전
{
sb.Append(s.Substring(i,1));
}
string rs = sb.ToString();
if (rs.Length == 10)
{
string rightLimit = (Math.Pow(2, 31) - 1).ToString();
string leftLimit = (Math.Pow(2, 31)).ToString();
if (isSigned)
{
for(int i = 0; i < 10; i++)
{
if (rs[i] < leftLimit[i]) break;
if (rs[i] > leftLimit[i]) return 0;
}
}
else
{
for(int i = 0; i < 10; i++)
{
if (rs[i] < rightLimit[i]) break;
if (rs[i] > rightLimit[i]) return 0;
}
}
}
int answer = int.Parse(rs);
if (isSigned) answer *= -1;
return answer;
}
}