6-1 复杂字符的回文
给定一个字符串,验证是否为回文,只考虑字母和数字字符,忽略字母大小写。注:空字符串定义为有效回文串。
函数接口定义:
int isPalindrome(char s[]);
void tolwr(char *s);
写出接口对应的两个函数定义,在isPalindrome函数中调用tolwr函数将大写字母转小写
裁判测试程序样例:
#include<iostream>
#include<cstring>
using namespace std;
int isPalindrome(char s[]);
void tolwr(char *s);
int main()
{
char s[100];
cin.getline(s,99);
if (isPalindrome(s))
cout << "true";
else
cout << "false";
return 0;
}
/* 请在这里填写答案 */
输入样例:
A man, a plan, a canal: Panama
输出样例:
true
c++解析:
#include<ctype.h>
#include<vector>
void tolwr(char* s)
{
//int len = strlen(s);
//for (int i = 0; i < len - 1; i++)s[i] = iswupper(s[i]);
}
int isPalindrome(char s[])
{
int len = strlen(s);
if (len <= 1)return 1;
tolwr(s);
string str="";
for (int i = 0; i < len ; i++)
{
if (isdigit(s[i]))str += s[i];
else if (isalpha(s[i]))str += tolower(s[i]);
}
for (int i = 0; i < str.length()/2; i++)
{
//cout << str[i] << " " << str[str.length() - i - 1] << endl;
if (str[i] != str[str.length() - i - 1])return 0;
}
return 1;
}