vamsu
8/4/2018 - 7:22 PM

Is Rotated Palindrome

Is Rotated Palindrome

import java.io.*;
import java.util.*;

class Solution {
  public static void main(String[] args) {
    Solution solution =new Solution();
    String[] input = {
          null,
          "",
          "CBAABCD",
          "BAABCC",
          "AC",
          "A",
          "AABADFBD"
        };
    for(int i=0;i< input.length;i++) {
      System.out.println("Input: " + input[i] + 
                     ", Result: " + solution.isRotatedPalidrome(input[i]));
    }
  }
  
  public boolean isRotatedPalidrome(String input){
    if(input == null || input.length() < 1) {
      return false;
    }
    return longestPalindromeExists(input+input, input.length());
  }
  
  
  public boolean longestPalindromeExists(String input, int k){
     for(int i=0; i<input.length();i++){
        if(expand(input, i, i, k) || expand(input, i, i+1, k)) {
            return true;   
        }
     }
     return false;
  }
    
  public boolean expand(String input, int low, int high, int k) {
    while(low >=0 && high < input.length() &&
          input.charAt(low) == input.charAt(high)) {
        if(high - low + 1 == k) {
          return true;
        }
        low--; high++;
    }
    return false;
  }
    
}