1.题目:回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
2.我的解答:
#include <stdio.h> //函数申明 bool isPalindrome(int x); bool isPalindrome(int x){ if(x<0) return false; long y=0; int temp=x; while(temp){ y = y*10 + temp%10; temp = temp/10; } if(x==y) return true; else return false; } int main() { int x=12321; printf("%d\n",isPalindrome(x)); return 0; }
3.题目进阶 将整数转为字符串来解决这个问题
4.进阶版解答
#include <stdio.h> #include <stdlib.h> //函数申明 bool isPalindrome(int x); bool isPalindrome(int x){ if(x<0) return false; //临时复制x的值 int temp = x; int length = 0,flag1,flag2; //计量x的长度 while(temp){ temp = temp/10; length++; } char *X; itoa(x,X,length); //从字符串头与尾部同时遍历 flag2 = length-1; while(flag1<flag2){ if(X[flag2] != X[flag1]) return false; } return true; } int main() { int x=-12321; printf("%d\n",isPalindrome(x)); return 0; }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句