力扣 回文数
先贴我写的.c文件
主要思路是:
1.用char类型的数组来存字符,这样可以判断 ‘ - ’ 号
2.读取字符的for循环中,有一个if语句来判断结尾。
3.再一个for循环,判断是不是回文数字。
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main(){ 4 int n = 0; //读取数字长度 5 char a[20]; 6 for(int i = 0 ;;i++){ //将数字读取到char 类型的a数组中 7 scanf("%c",&a[i]); 8 if(a[i]=='\n'){ 9 break; 10 } 11 n++; 12 } 13 //printf("数字长度是%d\n",n); 14 for(int i = 0;i < n-1-i ; i++){ //通过一位一位的比较,判断是不是回文。 15 if(a[i]!=a[n-i-1]){ 16 printf("false\n"); //如果不是,直接return 0 17 return 0; 18 } 19 } 20 printf("true\n"); //能够完成循环,说明中间都通过了验证,是回文数字。 21 return 0; 22 }
力扣上要求是一个函数,其实比我们这个还要更简单。注意!力扣上函数内传过来的是整型而不是字符型。
如下:
1 bool isPalindrome(int x){ 2 long sum=0; 3 int m=x; 4 if (x<0){ 5 return false; 6 } 7 while (x>0){ 8 sum=sum*10+x%10; 9 x/=10; 10 } 11 if (sum==m){ 12 return true; 13 }else{ 14 return false; 15 } 16 }