国外设计网站,用h5做的网站,加查网站建设,计算机方面学什么专业好1.题目 https://leetcode.cn/problems/palindrome-number/description/ 给你一个整数 x #xff0c;如果 x 是一个回文整数#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。 回文数 是指正序#xff08;从左向右#xff09;和倒序#xff08;从右向左如果 x 是一个回文整数返回 true 否则返回 false 。 回文数 是指正序从左向右和倒序从右向左读都是一样的整数。 例如121 是回文而 123 不是。 示例 1 输入x 121
输出true示例 2 输入x -121
输出false
解释从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3 输入x 10
输出false
解释从右向左读, 为 01 。因此它不是一个回文数。提示 -231 x 231 - 1 进阶你能不将整数转为字符串来解决这个问题吗 2.自解
由题可知:
1.负数不是回文数
2.判断回文数的算法:
1.如果不将整数转为字符串
分别取出回文数的每个位,再乘以10的次方
如121%101;12%102;1%101--1*1002*101*1121;121121,为回文数
143%103;14%104;1%101--3*1004*101*1341,341!143,不为回文数
2.如果将整数转为字符串
双指针访问 方法1:不将整数转为字符串
代码
bool isPalindrome(int x)
{if (x0)return false;if (x0)return true;int save_xx;int save_x_x;int length0;int sum0;while (x){x/10;length;}while (save_x){sum(save_x%10)*pow(10,length-1);save_x/10;length--;}if (sumsave_x_)return true;elsereturn false;
}
运行结果 方法2:将整数转为字符串双指针访问
代码
bool isPalindrome(int x)
{if (x 0)return false;if (x0)return true;char arr[11] { 0 };int length 0;char* left NULL;char* right NULL;while (x){arr[length] x % 10;x / 10;length;}left arr[0];right arr[length-1];while (left right){if (*left *right){left;right--;continue;}elsereturn false;}return true;}注:arr[length-1]的另一种写法(*(arrlength-1))
运行结果