2013년 2월 7일 목요일

Longest Palindromic Substring

 public String longestPalindrome(String s) {
  int len = s.length();
  if (len < 2)
   return s;

  int iLen = len - 1;
  int sIdx = 0;
  int eIdx = 0;
  int cLen = 0;

  for (int i = 0; i < iLen; i++) {
   for (int j = len - 1; j > i; j--) {
    int ss = i;
    int ee = j;
    boolean check = true;

    while (true) {
     if (s.charAt(ss++) != s.charAt(ee--)) {
      check = false;
      break;
     }

     if (ss >= ee)
      break;
    }

    if (check) {
     if (j - i > cLen) {
      cLen = j - i;
      sIdx = i;
      eIdx = j;
     }
     break;
    }
   }

   if (len - i < cLen)
    break;
  }

  return s.substring(sIdx, eIdx + 1);
 }

댓글 없음:

댓글 쓰기