9. 回文数
题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
我的方法(简单粗暴,效率较低):
class Solution { public: bool isPalindrome(int x) { if(x<0) return false; //<0的都是false else if(x==0) return true; //不要忘记判断0 else{ string rev,x_str; x_str=to_string(x); //注意使用to_string将int转换为string while(x){ rev+=to_string(x%10); x/=10; } cout<<rev<<x_str; if(rev==x_str) return true; //string类型的数据直接用==比较即可 else return false; } } };
参考解法(使用stringstream):
class Solution { public: bool isPalindrome(int x) { long rev; if (x < 0) return false;//排除负数 string str_x = to_string(x);//转换成字符串 std::reverse(str_x.begin(), str_x.end());//进行反转 stringstream out(str_x); out >> rev;//结果写入rev return x==rev;//比较得出结果 } };