isPalindrome-first day
practice for work~~~~~~~
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,"A man, a plan, a canal: Panama" is a palindrome."race a car" is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 bool isPalindrome(string s) { 7 if(s.length()<= 1) 8 return true; 9 10 int n= s.length(); // here can not be size_t 11 char b,c; 12 13 14 for(int i=0,j=n-1;j>i;i++, j--) 15 { 16 b = s.at(i); 17 while(b<48 || (b>57 && b < 97) || b> 122 ) // here i>n may happen 18 { 19 if (i>=j) // there may be i> n, so... 20 return true; 21 if (b>='A' && b <='Z') 22 b=b+32; 23 else 24 b = s.at(++i); 25 } 26 27 c = s.at(j); 28 while(c<48 || (c>57 && c < 97) || c> 122) 29 { 30 if (j<=i) 31 return true; 32 if (c>='A' && c <='Z') 33 c=c+32; 34 else 35 c = s.at(--j); 36 } 37 if(b != c) 38 return false; 39 } 40 return true; 41 } 42 43 int main() 44 { 45 string s="1a2"; 46 47 cout<<isPalindrome(s)<<endl; 48 49 return 0; 50 }
1 #include<string.h> 2 #include<stdlib.h> 3 #include<stdio.h> 4 5 6 bool isPalindrome(char *str) { 7 if (strlen(str)<=1) 8 { 9 return true; 10 } 11 12 char *s= str; 13 char *p = str+strlen(str)-1; 14 15 while(p>s) 16 { 17 while(*s<48 || (*s>57 && *s < 97) || *s> 122) 18 { 19 if (s>=p) 20 return true; 21 if (*s>='A' && *s <='Z') 22 *s=*s+32; 23 else 24 s++; 25 } 26 while(*p<48 || (*p>57 && *p < 97) || *p> 122) 27 { 28 if (s>=p) 29 return true; 30 if (*p>='A' && *p <='Z') 31 *p=*p+32; 32 else 33 p--; 34 } 35 if(*s != *p) 36 { 37 return false; 38 } 39 s++; 40 p--; 41 } 42 43 return true; 44 45 } 46 47 int main() 48 { 49 char s[]="1a1."; 50 printf("%d", isPalindrome(s)); 51 return 0; 52 }

浙公网安备 33010602011771号