题目:

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

题解:

第一种方法就是挨个检查,维护全局最长,时间复杂度为O(n3),会TLE。

代码如下:

1 public String longestPalindrome(String s) {

2

3     int maxPalinLength = 0;

4     String longestPalindrome = null;

5     int length = s.length();

6

7     //check all possible sub strings8     for (int i = 0; i

9         for (int j = i + 1; j

10             int len = j - i;

11             String curr = s.substring(i, j + 1);

12             if (isPalindrome(curr)) {

13                 if (len > maxPalinLength) {

14                     longestPalindrome = curr;

15                     maxPalinLength = len;

16                 }

17             }

18         }

19     }

20

21     return longestPalindrome;

22 }

23

24 public boolean isPalindrome(String s) {

25

26     for (int i = 0; i

27         if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {

28             return false;

29         }

30     }

31

32     return true;

33 }

第二种方法“是对于每个子串的中心(可以是一个字符,或者是两个字符的间隙,比如串abc,中心可以是a,b,c,或者是ab的间隙,bc的间隙,例如aba是回文,abba也是回文,这两种情况要分情况考虑)往两边同时进

行扫描,直到不是回文串为止。假设字符串的长度为n,那么中心的个数为2*n-1(字符作为中心有n个,间隙有n-1个)。对于每个中心往两边扫描的复杂

度为O(n),所以时间复杂度为O((2*n-1)*n)=O(n^2),空间复杂度为O(1)。”引自Code ganker(http://codeganker.blogspot.com/2014/02/longest-palindromic-substring-leetcode.html)

代码如下:

1     public String longestPalindrome(String s) {

2         if (s.isEmpty()||s==null||s.length() == 1)

3             return s;

4

5         String longest = s.substring(0, 1);

6         for (int i = 0; i

7             //get longest palindrome with center of i8             String tmp = helper(s, i, i);

9

10             if (tmp.length() > longest.length())

11                 longest = tmp;

12

13             //get longest palindrome with center of i, i+114             tmp = helper(s, i, i + 1);

15             if (tmp.length() > longest.length())

16                 longest = tmp;

17         }

18

19         return longest;

20     }

21

22     //Given a center, either one letter or two letter,23 //Find longest palindrome24     public String helper(String s, int begin, int end) {

25         while (begin >= 0 && end <= s.length() - 1 && s.charAt(begin) == s.charAt(end)) {

26             begin--;

27             end++;

28         }

29         return s.substring(begin + 1, end);

30     }

Reference:

http://www.programcreek.com/2013/12/leetcode-solution-of-longest-palindromic-substring-java/

http://codeganker.blogspot.com/2014/02/longest-palindromic-substring-leetcode.html

palindromic java_Longest Palindromic Substring leetcode java相关推荐

  1. leetcode 第五题 Longest Palindromic Substring (java)

    Longest Palindromic Substring Given a string S, find the longest palindromic substring in S. You may ...

  2. leetcode:java.T018_4Sum---给定一个整数数组,找出a + b + c + d = target的唯一解,不能有重复元素组

    <span style="color:#ff4635">敬请关注博客,后期不断更新优质博文,谢谢</span> package leetcode.T018_ ...

  3. Sqrt(int x) leetcode java

    Reference: http://blog.csdn.net/lbyxiafei/article/details/9375735  题目: Implement int sqrt(int x). Co ...

  4. leetcode word break java,Word Break leetcode java

    题目: Given a string s and a dictionary of words dict, determine if s can be segmented into a space-se ...

  5. [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]

    [问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...

  6. [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]

    [问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...

  7. java string.substring 参数,Java,String类中的subString()方法,stringsubstring

    Java,String类中的subString()方法,stringsubstring public class TestStringSubString { // main函数 public stat ...

  8. leetcode java输入输出方法,有关IntelliJ IDEA中LeetCode插件配置问题

    最初目的是在实验室电脑和笔记本电脑上同时配置好这个刷题插件,并且git互联,并锻炼自己debug以及输入输出. 前面的可以参考教程: 首先是在intellij上面下载安装好leetcode插件, 然后 ...

  9. Minimum Window Substring @LeetCode

    不好做的一道题,发现String Algorithm可以出很多很难的题,特别是多指针,DP,数学推导的题.参考了许多资料: http://leetcode.com/2010/11/finding-mi ...

最新文章

  1. 返回顶部的js实现(jQuery/MooTools)
  2. apache+svn
  3. java oop_Java实现OOP(面向对象编程)
  4. 清华大学计算机系毕业季博论 | 预荐未来的自己
  5. spring中的spel表达式语言
  6. JVM从入门到精通(八):JVM调优实战
  7. 【Python】Flask框架系列(三):session和cookie操作、get/post请求、钩子函数
  8. bootscripttable前端排序无效_前端你应该知道的八条bug分享给你们
  9. python 查看数据结构类型_python 数据结构类型总结(示例代码)
  10. python conf配置文件
  11. 嵌套访问_利用Idea重构功能及Java8语法特性——优化深层嵌套代码
  12. 深度学习教程(8) | AI应用实践策略(上)(吴恩达·完整版)
  13. Docker个人理解与初级使用
  14. MPU和MMU、MPU和MCU的区别
  15. jquery对表格行列的操作-jquery动态增加表格行或者列
  16. c语言递归函数的运行步骤,c语言中递归函数的运行过程?
  17. OpenSearch图搜图、文搜图向量检索最佳实践
  18. Python实现SVM的实例(包括网格调参和测试)总结综述
  19. git查看打tag时间_使用git打tag标签/切换到某个tag时期,删除/查看分支
  20. 支付宝APP支付Java服务端

热门文章

  1. pyqt5能直接编译python吗_用PyInstaller打包用PyQt5编写的python程序
  2. python点击屏幕_Python Appium 滑动、点击等
  3. 一文搞定Mysql日期时间函数
  4. SAP UI5 初学者教程之应用开发 - 过滤器 filter 的开发和使用
  5. 在阿里云 ECS 上配置 SSH
  6. 部署 Node.js 应用以完成服务器端渲染 Server Side Rendering 的性能调优
  7. 介绍一个 Windows 10 资源管理器的替代工具 - Explorer++
  8. sudo apt install 遇到关于 lock 的错误消息
  9. SAP Spartacus 里的 cxOutletRef 指令执行过程分析
  10. SAP Spartacus shipping address页面请求2 - Put Address