9. Palindrome Number
Posted ming-1012
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9. Palindrome Number相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode.com/problems/palindrome-number/description/
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?
思路:
- 判断一个数是否为回文数,这里有两种常见的处理方法:
- 方法一:将数字转换为string类型 ,然后对string首尾开始遍历,当遍历过程中,出现首尾不等的情况,则可判断数字不是回文数,若遍历完成没有出现不等的情况,则该数为回文数。
- 方法二:和第一种方法其实也是异曲同工之妙,将数字进行取余和除数操作,即将数字按数位“一层层剥离”,例如:123,通过上述所述方法依次变为3、2、1。将分离出来的数字存入容器中,然后进行和方法一中的类似操作,也是在容器的首尾依次对容器中的元素进行遍历,处理手段同方法一。
编码如下:
1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4 if (x < 0) return false; // 负数不满足 5 if (x < 10) return true; // 0满足 6 7 // 方法一:直接转换为string类型进行处理 8 string s = to_string(x); 9 10 for (int i = 0, j = s.length() - 1; i <= j; ++i, --j) 11 { 12 if (s[i] != s[j]) return false; 13 } 14 15 16 // 方法二:对数字进行“逐层剥离” 17 // vector<int> ivec; 18 // while (x != 0) 19 // { 20 // int cur = x % 10; 21 // ivec.push_back(cur); 22 // x = x / 10; 23 // } 24 25 // for (int i = 0, j = ivec.size() - 1; i <= j; ++i, --j) 26 // { 27 // if (ivec[i] != ivec[j]) return false; 28 // } 29 30 return true; 31 } 32 };
以上是关于9. Palindrome Number的主要内容,如果未能解决你的问题,请参考以下文章