C++:给定一个字符串,验证是否为回文,只考虑字母和数字字符,忽略字母大小写。

#include<iostream> 
#include<cstring> 
using namespace std; 
int isPalindrome(char s[]); 
int main() 
{ 
	char s[100]; 
	gets(s); 
	if (isPalindrome(s)) 
		cout << "true"; 
	else 
		cout << "false"; 
	return 0; 
	
} 
void tolwr(char *s) 
{ 
	int len=strlen(s);
	for(int i=0;i<len;i++)
	{
		if(s[i]>='a'&&s[i]<='z')
		{
			s[i]-=32;//字母全部转化成大写
		}
	}
}
 int isPalindrome(char *s) 
{ 
 	tolwr(s); 
	int left = 0; 
	int right = strlen(s) - 1; 
	int x=1;
	while(left<right)
	{
		while(left<right&&!(s[left] >= '0' && s[left] <= 9 || s[left] >= 'A' && s[left] <= 'Z'))
		{
			left++;//左边不符合字母和数字的条件就往右走
		}
		while(left<right&&!(s[left] >= '0' && s[right] <= 9 || s[right] >= 'A' && s[right] <= 'Z'))
		{
			right--;//右边不符合条件就往左走
		}
		if(s[left]!=s[right])//符合字母和数字的条件,开始判断
		{
			x=0;//不符合就直接返回不是回文
			break;
		}
		left++;//接着下一轮
		right--;
	}
	return x;
}

**

测试:

**
输入样例:
A man, a plan, a canal; Panama
输出:
true

输入样例:
race a car
输出:
false

by北科sjk

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值