您的位置:首页 > 其它

判断字符串是否是回文字符串或者是否含有回文字符子串 (我是从两颗番茄的博客看的题目,然后自己编的) 不断学习!!

2011-10-12 22:59 465 查看
声明:这是我从"两颗番茄"的博客看的题目,然后自己编的 不断学习!!

在此谢谢他 呵呵!

不仅能判断规则的中心对称,如123454321,还要能判断如123456547890中的45654的不规则部分中心对称

算法思想

从第一个字符开始,逐个扫描,对每一个字符,查找下一个相同字符,判断这两个字符之间的字符串是否回文。

#include <iostream.h>
#include <string.h>
#define ERROR 0
#define OK 1
int Find(int m,int n,char arr[])
{//查找相同的元素,返回相同的位置
for(;m<n;--n)
{
if(arr[m]==arr
)
return n;
}
return -1;
}
int Cmp(int a,int b,char arr[])
{//比较是否存在回文
while(arr[a]==arr[b])
{//比较每一个元素
++a;
--b;
if(a>=b)
return OK;   //比较结束
}
return ERROR;
}
int main()
{
int i=0,j=0;
int m=0,max=0,n;
char str[20];
cin>>str;
while(str[j])
{
++j;
}
--j;  //数组的最后一位为j
max=j;  //数组的最大值
n=max;
for(;m<=n;++m)
{
int p=Find(m,n,str);
if(p)
if(Cmp(m,p,str))
{  //若存在回文
cout<<"存在回文"<<endl;
for(int x=m;x<=p;++x)
{
cout<<str[x]<<" ";
}
return 0;
}
}
cout<<"不存在回文"<<endl;
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐