C++:文字列を指定し、エコーであるかどうかを検証し、アルファベットと数字文字のみを考慮し、アルファベットの大文字と小文字を無視します.

9282 ワード

#include 
#include 
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