leetcode刷题日记——Palindrome Number

本文介绍了一种不使用额外空间判断整数是否为回文数的方法。通过将整数转换为字符串并比较首尾字符的方式进行验证,同时提供了两种实现方式:一种直接利用字符串特性,另一种则通过数组存储数字再进行比较。

Determine whether an integer is a palindrome. Do this without extra space. 

问题分析:判断是个数是否是回文数(正反看都一样的数字),显然负数不是回文数。解决办法就是一次判断首尾是否一样就可以了,当然 可以考虑递归,但是有迭代的方法可以解决,题目要求不能要求额外的空间。这里采用把数字转化为字符串,然后判断。实现代码如下:

class Solution {
public:
    bool isPalindrome(int x) {
       if (x < 0) return false;
	if (x / 10 == 0) return true;
	string num = to_string(x);
	for (int i = 0, j = num.size() - 1; i <= j; i++, j--){
		if (num[i] != num[j]) return false;
	}
	return true;
    }
};

当然如果考虑额外空间的情况,可以依次运算来获取每一位的数字,保存到数组中,然后判断,实现代码如下:

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0) return false;
        if(x/10==0) return true;
        vector<int> num;
        while(x){
            num.push_back(x%10);
            x/=10;
        }
        for(int i=0,j=num.size()-1;i<=j;i++,j--){
            if(num[i]!=num[j]) return false;
        }
        return true;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值