Shortest Palindrome
2016-07-08 12:49
260 查看
public class Solution { public String shortestPalindrome(String s) { if (s.length() < 2) { return s; } String newS = s + "#" + new StringBuilder(s).reverse().toString(); int[] pos = new int[newS.length()]; for (int i = 1; i < newS.length(); i++) { int prePos = pos[i - 1]; while (prePos > 0 && newS.charAt(prePos) != newS.charAt(i)) { prePos = pos[prePos - 1]; } pos[i] = prePos + ((newS.charAt(i) == newS.charAt(prePos)) ? 1 : 0); } return new StringBuilder(s.substring(pos[pos.length - 1])).reverse().toString() + s; } }
KMP
相关文章推荐
- iOS-CoreGraphics学习(彩色图片转灰白图片)
- 论文笔记 |What makes for effective detection proposals?
- Css3 - Animation Examples
- SQL经典短小代码收集
- Codeforces Round #361 (Div. 2) C. Mike and Chocolate Thieves
- [Array]Rotate Array
- 使用juggle简化网络编程
- [Array]Rotate Array
- Java自增原子性问题(测试Volatile、AtomicInteger)
- 每日一linux命令(27)-------tar命令
- perl 获取文件内容里第一个AAA和最后一个AAA
- 采集视频并写入文件
- 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
- perl 获取文件内容里第一个AAA和最后一个AAA
- perl 获取文件内容里第一个AAA和最后一个AAA
- Android使用ListView批量删除item的方法
- Oculus CTO卡马克:延迟背后的真相
- L7,too late
- 视屏采样
- ulipad中文乱码解决方案