回文字符串的判断,如12321 abccba
程序如下:递归算法
#include <iostream>
#include <string.h>
using namespace std;
//回文字符串的判断
// 123321 -> 2332 -> 33
char* huiwen(int m,int n,char* arr,int len)
{
if(!len || len == 1)
return "YES";
if(arr[m]==arr[n])
{
m++;
n--;
len-=2;
huiwen(m,n,arr,len);
}
else if(arr[m]!=arr[n])
{
return "NO";
}
return huiwen(m,n,arr,len);
}
int main()
{
int n;
cin>>n;//输入字符个数
char* arr = new char[n]; //第一种方式
//char arr[10] = ""; //第二种方式
for(int i=0; i<n; i++)
{
cin>>arr[i];
}
arr[n]='\0';//字符数组引为字符串,然后使用strlen
int len = strlen(arr);
//int len = sizeof(arr)/sizeof(arr[0]);
// for(int i=0; i<n; i++) //查看所存信息
// {
// cout<<arr[i]<<endl;
// }
//cout<<sizeof(arr)<<endl; //第一种方式:输出4 首地址arr(指针) (32位系统)占4字节
//cout<<sizeof(arr)<<endl; //第二种方式:输出10 数组长度
//cout<<sizeof(*arr)<<endl; //输出1 (字符数组元素为char)
//cout<<len;
char* e= huiwen(0,len-1,arr,len);
cout<<e<<endl;
delete[] arr;
return 0;
}