网站开发英语词汇,晋江 网站建设 推广,哪个网站可以做excel,义乌好品质自适应网站建设1 题目
判断一个整数是否是回文数。回文数是指正序#xff08;从左向右#xff09;和倒序#xff08;从右向左#xff09;读都是一样的整数。
2 解法
2.1 初版
2.1.1 思路
由于题目不允许把数直接转化为字符串, 所以想到了把数的每一位转换为双向数组, 然后对头尾一点…1 题目
判断一个整数是否是回文数。回文数是指正序从左向右和倒序从右向左读都是一样的整数。
2 解法
2.1 初版
2.1.1 思路
由于题目不允许把数直接转化为字符串, 所以想到了把数的每一位转换为双向数组, 然后对头尾一点一点比较
2.1.2 代码 bool isPalindrome(int x) {if (x 0) {return false;}dequeint tDeque;while (x) {tDeque.push_back(x % 10);x / 10;}while (tDeque.size() 1) {int front tDeque.front();int back tDeque.back();if (front back) {tDeque.pop_front();tDeque.pop_back();} else {return false;}}return true;}
2.1.3 结果
性能属实不咋地: 2.2 第二版
2.2.1 思路
pop出来是不是费性能, 所以直接用vector, 不pop了
2.2.2 代码 bool isPalindrome(int x) {if (x 0) {return false;}vectorint tVec;while (x) {tVec.push_back(x % 10);x / 10;}int left 0;int right tVec.size() - 1;while (left right) {if (tVec[left] tVec[right]) {left ;right --;} else {return false;}}return true;}
2.2.3 结果
这还不如之前的呢...... 2.3 答案解法
2.3.1 思路
只翻转一半, 也就是说如果后一半翻转之后与剩下的前一半看看是否相等.
2.3.2 代码 bool isPalindrome(int x) {if (x 0 || (x 0 x % 10 0)) {return false;}int reverseNumber 0;while (reverseNumber x) {reverseNumber reverseNumber * 10 x % 10;x / 10;}if (reverseNumber x) {reverseNumber / 10;}return (reverseNumber x);}
2.3.3 性能
也不咋地