同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。
题目为给定一个整数 ( Int ),判断他是不是回文的结构。
题目与范例如下
Given an integer x, return true if x is palindrome integer.
An integer is a palindrome when it reads the same backward as forward. For example, 121 is palindrome while 123 is not.
Example 1:
Input: x = 121
Output: true
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.
Example 4:
Input: x = -101
Output: false
Constraints:
-231 <= x <= 231 - 1
Follow up: Could you solve it without converting the integer to a string?
我的解题方法为,先判别是否为负数,如果是负数就回传 false。再把整数依序取出位数,反过来存到另一个整数里,假设最后比较两个整数相等就回传 true,反之 false。
下方为我的代码
bool isPalindrome(int x){
if(x<0)
return false;
else if(x == 0)
return true;
else{
int temp = x,reverse = 0;
while(temp!=0){
if(reverse>214748364)
return false;
reverse*=10;
if(reverse > INT_MAX-(temp%10))
return false;
reverse += temp%10;
temp/=10;
}
if(reverse == x)
return true;
else
return false;
}
}
下方为时间与空间之消耗
Runtime: 8 ms, faster than 68.63 % of C online submissions for Palindrome Number.
Memory Usage: 5.7 MB, less than 95.04 % of C online submissions for Palindrome Number.