입력된 int를 반전시킨 int를 결과로 출력하는 문제입니다.
이 때, 반전시킨 int값이 integer의 범위인 [-2³¹, 2³¹-1]에 포함되지 않을 경우 0을 출력해야합니다.
class Solution {
public:
int reverse(int x) {
int maxInt = INT_MAX;
int minInt = INT_MIN;
int reverse = 0;
vector<int> nums;
if (x<0)
{
while(true)
{
if(x%10 != 0)
{
nums.push_back(x%10);
x /= -10;
break;
}
x /= 10;
}
}
else if (x == 0)
return x;
while(x)
{
nums.push_back(x%10);
x /= 10;
}
reverse = nums[0];
for(int i=1; i<nums.size(); i++)
{
if (reverse <= maxInt/10 && reverse >= minInt/10)
{
reverse *= 10;
}
else
{
return 0;
}
if (reverse <= maxInt - nums[i] && reverse >= minInt + nums[i])
{
if(reverse >= 0)
reverse += nums[i];
else
reverse -= nums[i];
}
else
{
return 0;
}
}
return reverse;
}
};
'알고리즘 > LeetCode' 카테고리의 다른 글
[LeetCode] 4. Median of Two Sorted Arrays (Hard) (0) | 2022.04.28 |
---|---|
[LeetCode] 14. Longest Common Prefix (Easy) (0) | 2022.04.28 |
[LeetCode] 6. Zigzag Conversion (Medium) (0) | 2022.04.28 |
[LeetCode] 9. Palindrome Number (Easy) (0) | 2022.04.27 |
[LeetCode] 3. Longest Substring Without Repeating Characters (Medium) (0) | 2022.04.27 |