回文数:
如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数
#include <iostream>
using namespace std;
bool Symmetry(long n)
{
long i;
long tmp;
i = n;
tmp = 0;
while( i ) //不用出现长度问题,将数按高低位掉换
{
tmp = tmp * 10 + i % 10;
i = i / 10;
}
return ( n == tmp );
}
int main()
{
int n;
std::cin >> n;
if (Symmetry(n))
{
cout << 'YES' << endl;
}
else
{
cout << 'NO' << endl;
}
return 0;
}
回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的
//1. 字符串长度可能会奇数或偶数:
// 如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文
// 如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文
//2. 如果检查到两端两个字符不相同。则说明此字符串不是回文,直接返回0,不需要继续检查
int Symmetry2(int low, int high, char *str, int length)
{
if ( 0 == length || 1 == length )
{
return 1;
}
if ( str[low] != str[high])
{
return 0;
}
return Symmetry2( low + 1, high - 1, str, length - 2 );
}
int main()
{
char str[] = "CSDNNDSC";
int length = strlen(str);
cout << Symmetry2(0, length - 1, str, length ) << endl;
return 0;
}