[ create a new paste ] login | about

Link: http://codepad.org/XWMbFi1X    [ raw code | fork | 1 comment ]

spy974 - C, pasted on Oct 15:
typedef struct pal_pos {
  char* str;
  int size;
} palindrome;

void is_pal(char* str, int i, int n, palindrome* p) {
  char* sstr = strndup(str + i, n - i);
  int sz = n - i;
  int pivot = sz / 2 + (sz % 2);

  int j;
  for (j = 0; j < pivot; j++)
    if (sstr[j] != sstr[sz - j - 1])
      return;

  p->str = (char*)realloc(p->str, sz);
  p->str = sstr;
  p->size = sz;
}

int main(int argc, char** argv) {
  char* str;
  palindrome* p = (palindrome*) malloc(sizeof(palindrome));
  int sz;

  if (argc <= 1) {
    printf("need one parameter");
    return -1;
  }
  sz = strlen(argv[1]);
  str = (char*) malloc(sizeof(strlen(argv[1])));
  str = strndup(argv[1], strlen(argv[1]));
  p->str = (char*) calloc(0, 1);
  p->size = 0;
  
  int n, i;
  for (n = 0; n < sz; n++)
    for (i = 0; n - i > p->size; i++) {
      is_pal(str, i, n, p);
    }
  fprintf(stdout, "The longuest palindrome is %s \n", p->str);

  free(p->str);
  free(p);
  return 0;
}


Create a new paste based on this one


Comments:
posted by spy974 on Oct 15
This is the a naive way to determine the longuest palindrome in a string.
reply