記錄一下新的面試題目,其實題目是舊的,只是我才見到。以前研究過,只不過以前的解法不容易理解,現在有了新的遞歸解法。記錄一下。

public String shortestPalindrome(String s){
  int i = 0;
  int j = s.length() -1;
  while(j>=0){
    if(s.charAt(i) == s.charAt(j)){
      i++;
    }
    j--;
  }
  if(s.length() == i)
    return s;
  String suffix = s.substring(i);
  String prefix = new StringBuilder(suffix).reverse().toString();
  String mid = shortestPalindrome(s.substring(0,i));
  
  return prefix + mid + suffix;
}

這樣解決問題,感覺比較理想。容易理解記憶,希望下次再次遇到能夠直接搞定。

05-08 15:21