How about a Perl compatible regular expression for grep? I guess that's an algorithm.
This one will search for seven-letter palindromes:
grep -P '(?=^.{7}$)(.)(.)(.).\3\2\1' /path/to/your/dictionary
The -P flag let's grep recognize perl compatible regular expressions (PCRE).
The (?=^.{7}$) looks ahead to make sure it's matching a seven-letter word.
The \1 is a backreference to the first (.) which matches any character. But now it has to match it again, except we're asking it to match in reverse order, \3\2\1 instead of \1\2\3.
Then we have a single dot for the fourth letter, which will match any character.
Just add or subtract subexpressions "(.)" as needed, along with the appropriate number backreferences "/1" to find palindromes.
This is the output from grepping the TWL (the Scrabble dictionary):
deified
halalah
reifier
repaper
reviver
rotator
sememes
There is no palindrome for 14.
"Was it a rat I saw? is a palindrome.
Yes, 1331 is a palindrome
606 is a palindrome.
Numeric palindrome
def isPalindrome(s): return s == s[::-1] then just call the function with a string like isPalindrome('poop')
#include <stdio.h> #include <conio.h> #include <string.h> void input(char a[ ]) { int i; printf("\n enter string\n"); scanf("%s",a); } void output(char a[ ]) { printf("\n string is %s",a); } int palindrome(char a[ ]) { int n,i; n=count(a); n=n-1; i=0; for(;a[n]==a[i] && n>=i;i++,n--); if(n>=i) return 0; else return 1; } void main( ) { char a[80],b[80],s; int n; printf("\n check palindrome"); input(a); n=palindrome(a); output(a); if(n==1) printf("\n palindrome"); else printf("\n not palindrome"); getch(); }
#include <stdio.h> #include <conio.h> #include <string.h> void input(char a[ ]) { int i; printf("\n enter string\n"); scanf("%s",a); } void output(char a[ ]) { printf("\n string is %s",a); } int palindrome(char a[ ]) { int n,i; n=count(a); n=n-1; i=0; for(;a[n]==a[i] && n>=i;i++,n--); if(n>=i) return 0; else return 1; } void main( ) { char a[80],b[80],s; int n; printf("\n check palindrome"); input(a); n=palindrome(a); output(a); if(n==1) printf("\n palindrome"); else printf("\n not palindrome"); getch(); }
#include <stdio.h> #include <conio.h> #include <string.h> void input(char a[ ]) { int i; printf("\n enter string\n"); scanf("%s",a); } void output(char a[ ]) { printf("\n string is %s",a); } int palindrome(char a[ ]) { int n,i; n=count(a); n=n-1; i=0; for(;a[n]==a[i] && n>=i;i++,n--); if(n>=i) return 0; else return 1; } void main( ) { char a[80],b[80],s; int n; printf("\n check palindrome"); input(a); n=palindrome(a); output(a); if(n==1) printf("\n palindrome"); else printf("\n not palindrome"); getch(); }
No, it isn't a palindrome.
The palindrome is Level.
There is no palindrome for 14.
Any number that is is a palindrome will always be a palindrome.
No. A palindrome reads the same backwards and forwards. 5791111975 is an example of a palindrome.
They are different because standard algorithm is more common then the expanded algorithm
1998 is not and cannot be a palindrome.
"radar" is a palindrome for detector.