1.数组(判断第一位与倒数第一位的数是否相等,第二位数与倒数第二位数是否相等,...)
#include<stdio.h>
#include<stdlib.h>
bool Is_Hui(char *str,int len)
{
for(int i=0;i<len;i++)
{
if(*(str+i) !=*(str+len-1-i))
return false;
}
return true;
}
int main()
{
char str[]={'a','b','c','d','c','b','a'};
printf("%d\n",Is_Hui(str,sizeof(str)/sizeof(str[0])));
char str1[]={'a','b','c','c','b','a','f'};
printf("%d\n",Is_Hui(str1,sizeof(str1)/sizeof(str1[0])));
return 0;
}
2.字符串(用一个char*类型的指针指向传入的字符串的首地址,让该指针指向传入字符串的最后一个元素,一次第一位与最后一位比较,第二位与倒数第二位比较,...)
#include<stdio.h>
bool Is_Hui(char *str)
{
char *p=str;
while(*p != '\0')
{
p++;
}
p--;
while(str<p)
{
if(*str !=*p)
return false;
str++;
p--;
}
return true;
}
int main()
{
char str[]="hello world";
printf("%d\n",Is_Hui(str));
char str1[]="abcdedcba";
printf("%d\n",Is_Hui(str1));
return 0;
}
3.数字(对数字%10得到其个位数,把得到的个位数保存在一个整形数组中,判断第一位与倒数第一位的数是否相等,第二位数与倒数第二位数是否相等,...)
#include<stdio.h>
bool Is_Hui(int num)
{
int arr[1024];
int i=0;
while(num>0)
{
arr[i]=num;
i++;
num /=10;
}
for(int j=0;j<i/2;j++)
{
if(arr[j] != arr[i-1-j])
return false;
}
return true;
}
int main()
{
int a=1234321;
printf("%d\n",Is_Hui(a));
int a1=84567;
printf("%d\n",Is_Hui(a1));
return 0;
}
4.链表
#include<stdio.h>
int main()
{
int a;
cin>>a;
int n = a;
int tmp;
stack<int> s;
while(a != 0)
{
s.push(a%10);
a /= 10;
}
while(!s.empty())
{
tmp = s.top();
if(tmp != n%10)
{
printf("不是回文\n");
return 0;
}
s.pop();
n /= 10;
}
printf("是回文\n");
return 0;
}