LeetCode 9 回文数

题目描述:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true

示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

解题思路:

首先,负数和10的倍数不是回文数。

然后,将该数字翻转。

最后,比较翻转之后的数字和原来的数字是否相等,如果相等则是回文数,如果不相等则不是回文数。

class Solution {
public:
    bool isPalindrome(int x) {
        //判断示例2和示例3这种类型
	    	if(x < 0 || x > 0 && x % 10 == 0) return false;
	    	//处理示例1类型
	    	long originValue = x;
	    	long res = 0;
	    	while(x != 0){
	    		res = res*10+x%10;
	    		x/=10;
	    	}
	    	return originValue == res;
    }
};

总结:对于回文类问题一个常用的解决思路就是将其翻转,然后和原来的进行比较,如果相等则表示为回文,如果不相等则不是回文。这种方法只需遍历一次就够,时间复杂度和空间复杂度都是O(n)。是一种不错的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章