判断回文问题

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;

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值