LeetCode 214 Shortest Palindrome (KMP)

 

Refer: https://segmentfault.com/a/1190000003059361

 

O(n^2) Solution

    public String shortestPalindrome(String s) {
        if(s == null || s.length() <= 1) return s;
        
        int len = s.length(); 
        int tail = len - 1;
        
        StringBuffer sb = new StringBuffer();
        while(tail >= 1) {
            if(isPan( s.substring(0, tail + 1) ) ) {
                sb = sb.append(s.substring(tail, s.length())).reverse();
                break;
            }
            tail--;
        }
        
        sb.append(s);
        
        return sb.toString();
    }
    
    private boolean isPan(String s) {
        if(s == null || s.length() <= 1) return true;
        
        int left = 0, right = s.length() - 1;
        while(left < right) {
            if(s.charAt(left) == s.charAt(right)) {
                left++;
                right--;
            } else return false;
        }
        
        return true;
    }

 

posted on 2016-02-15 08:44  xwang2014  阅读(204)  评论(0编辑  收藏  举报