palindromic java_Longest Palindromic Substring leetcode java
题目:
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相关推荐
- leetcode 第五题 Longest Palindromic Substring (java)
Longest Palindromic Substring Given a string S, find the longest palindromic substring in S. You may ...
- leetcode:java.T018_4Sum---给定一个整数数组,找出a + b + c + d = target的唯一解,不能有重复元素组
<span style="color:#ff4635">敬请关注博客,后期不断更新优质博文,谢谢</span> package leetcode.T018_ ...
- Sqrt(int x) leetcode java
Reference: http://blog.csdn.net/lbyxiafei/article/details/9375735 题目: Implement int sqrt(int x). Co ...
- 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 ...
- [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]
[问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...
- [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]
[问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...
- java string.substring 参数,Java,String类中的subString()方法,stringsubstring
Java,String类中的subString()方法,stringsubstring public class TestStringSubString { // main函数 public stat ...
- leetcode java输入输出方法,有关IntelliJ IDEA中LeetCode插件配置问题
最初目的是在实验室电脑和笔记本电脑上同时配置好这个刷题插件,并且git互联,并锻炼自己debug以及输入输出. 前面的可以参考教程: 首先是在intellij上面下载安装好leetcode插件, 然后 ...
- Minimum Window Substring @LeetCode
不好做的一道题,发现String Algorithm可以出很多很难的题,特别是多指针,DP,数学推导的题.参考了许多资料: http://leetcode.com/2010/11/finding-mi ...
最新文章
- 返回顶部的js实现(jQuery/MooTools)
- apache+svn
- java oop_Java实现OOP(面向对象编程)
- 清华大学计算机系毕业季博论 | 预荐未来的自己
- spring中的spel表达式语言
- JVM从入门到精通(八):JVM调优实战
- 【Python】Flask框架系列(三):session和cookie操作、get/post请求、钩子函数
- bootscripttable前端排序无效_前端你应该知道的八条bug分享给你们
- python 查看数据结构类型_python 数据结构类型总结(示例代码)
- python conf配置文件
- 嵌套访问_利用Idea重构功能及Java8语法特性——优化深层嵌套代码
- 深度学习教程(8) | AI应用实践策略(上)(吴恩达·完整版)
- Docker个人理解与初级使用
- MPU和MMU、MPU和MCU的区别
- jquery对表格行列的操作-jquery动态增加表格行或者列
- c语言递归函数的运行步骤,c语言中递归函数的运行过程?
- OpenSearch图搜图、文搜图向量检索最佳实践
- Python实现SVM的实例(包括网格调参和测试)总结综述
- git查看打tag时间_使用git打tag标签/切换到某个tag时期,删除/查看分支
- 支付宝APP支付Java服务端
热门文章
- pyqt5能直接编译python吗_用PyInstaller打包用PyQt5编写的python程序
- python点击屏幕_Python Appium 滑动、点击等
- 一文搞定Mysql日期时间函数
- SAP UI5 初学者教程之应用开发 - 过滤器 filter 的开发和使用
- 在阿里云 ECS 上配置 SSH
- 部署 Node.js 应用以完成服务器端渲染 Server Side Rendering 的性能调优
- 介绍一个 Windows 10 资源管理器的替代工具 - Explorer++
- sudo apt install 遇到关于 lock 的错误消息
- SAP Spartacus 里的 cxOutletRef 指令执行过程分析
- SAP Spartacus shipping address页面请求2 - Put Address