当前位置: 代码迷 >> 综合 >> leetcode:Palindrome Number 回文数的判定
  详细解决方案

leetcode:Palindrome Number 回文数的判定

热度:48   发布时间:2023-12-02 04:36:37.0

date: 2018-09-28 09:07:00+00:00
原标题: leetcode:Palindrome Number 回文数的判定
原链接: https://www.dreamoftime0.com/2018/09/28/leetcodepalindrome-number-%e5%9b%9e%e6%96%87%e6%95%b0%e7%9a%84%e5%88%a4%e5%ae%9a/

题目:

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121
Output: true
Example 2:

Input: -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: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:

Coud you solve it without converting the integer to a string?

解法1:

作为字符串处理,判断反转后是否和原来一致

class Solution {
public:bool isPalindrome(int x) {string str=to_string(x);string str0=str;reverse(str.begin(),str.end());return str == str0;}
};

解法2:

作为数字处理,前半部分和反转后的后半部分比较,如果相同(x的位数为偶数)或大的部分除以10后相同(x的位数为奇数),则说明为回文数。

class Solution {
public:bool isPalindrome(int x) {if(x<0 || (x%10==0 && x!=0))return false;int tmp=0;while(x>tmp){tmp=tmp*10+x%10;x/=10;}return x==tmp || x==tmp/10;}
};

测试程序:

/*Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.Example 1:Input: 121
Output: true
Example 2:Input: -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: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:Coud you solve it without converting the integer to a string?*/#include<iostream>
#include<algorithm>using namespace std;class Solution {
public:bool isPalindrome(int x) {/*if(x<0 || (x%10==0 && x!=0))return false;int tmp=0;while(x>tmp){tmp=tmp*10+x%10;x/=10;}return x==tmp || x==tmp/10;*/string str=to_string(x);string str0=str;reverse(str.begin(),str.end());return str == str0;}
};int main(){Solution s;cout<<s.isPalindrome(121)<<endl;cout<<s.isPalindrome(-121)<<endl;cout<<s.isPalindrome(123)<<endl;cout<<s.isPalindrome(0)<<endl;cout<<s.isPalindrome(120)<<endl;
}
  相关解决方案