diff --git a/c/palindrome.c b/c/palindrome.c index 36b55f7..3c214e6 100644 --- a/c/palindrome.c +++ b/c/palindrome.c @@ -1,8 +1,18 @@ -int palindrome(const char *str, unsigned len) { - unsigned idx = 0; +#include - for(; idx < (len - (len % 2)) / 2; idx += 1) { - if(str[idx] != str[len - idx - 1]) { +int palindrome(const char *str, unsigned len) { + const char *start = str; + const char *end = str + len - 1; + + while(start < end) { + if(!isalpha(*start)) { + start += 1; + } else if(!isalpha(*end)) { + end -= 1; + } else if(tolower(*start) == tolower(*end)) { + start += 1; + end -= 1; + } else { return 0; } }