Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- char toLower(char letter){
- return (letter>='a' && letter<='z') ? letter : letter+'a'-'A';
- }
- int isPalindrom(char *start, char *end){
- if(start>end || (start==end && toLower(*start)==toLower(*end)))return 1;
- else if(toLower(*start)!=toLower(*end))return 0;
- return isPalindrom(start+1,end-1);
- }
- void longestPalindrom(char *sen){
- char *end=sen+strlen(sen)-1;
- //Helping pointers
- char *start,*helpEnd,*finalStart=sen+1,*finalEnd=sen;
- for(start=sen;start<=end;start++){
- for(helpEnd=end;helpEnd>=start && !isPalindrom(start,helpEnd);helpEnd--);
- if(helpEnd>start && (helpEnd-start)>(finalEnd-finalStart))
- finalEnd=helpEnd,finalStart=start;
- }
- for(;finalStart<=finalEnd;finalStart++)
- printf("%c",*finalStart);
- }
- int main(){
- //Test
- longestPalindrom("");
- longestPalindrom("yxpxYstsyxpx");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement