原题链接


找到并返回最长回路子串

思路:

解法一:

最简单的双重遍历,判断s[i]到s[j]是不是回串。

Runtime: 610 ms, faster than 6.39% of Java 慢的不行

  1. class Solution {
  2. public String longestPalindrome(String s) {
  3. int len=s.length();
  4. for (int i = 0; i < len; i++) {
  5. int subNum = i + 1;
  6. int subLen = len - i;
  7. for (int j = 0; j < subNum; j++) {
  8. String subStr = s.substring(j, j + subLen);
  9. if (isPalindrome(subStr))
  10. return subStr;
  11. }
  12. }
  13. return "";
  14. }
  15. public boolean isPalindrome(String s){
  16. int beg = 0, end = s.length() - 1;
  17. while(beg<end){
  18. if(s.charAt(beg)!=s.charAt(end))
  19. return false;
  20. beg++;
  21. end--;
  22. }
  23. return true;
  24. }
  25. }

解法二:

遍历一次,以每一个s[i]为中心,计算。

Runtime: 4 ms, faster than 100.00% of Java

  1. class Solution {
  2. int len = 0, maxLength = 0, start = 0;
  3. public String longestPalindrome(String s) {
  4. char[] arr = s.toCharArray();
  5. len = s.length();
  6. if (len <= 1)
  7. return s;
  8. for (int i = 0; i < len; i++) {
  9. i = helper(arr, i);
  10. }
  11. return s.substring(start, start + maxLength);
  12. }
  13. public int helper(char[] arr, int k) {
  14. int i = k - 1, j = k;
  15. while (j < len - 1 && arr[j] == arr[j + 1])
  16. j++;
  17. int nextCenter = j++;
  18. while (i >= 0 && j < len && arr[i] == arr[j]) {
  19. i--;
  20. j++;
  21. }
  22. if (j - i - 1 > maxLength) {
  23. maxLength = j - i - 1;
  24. start = i + 1;
  25. }
  26. return nextCenter;
  27. }
  28. }

[leetcode] 5. Longest Palindromic Substring (Medium)的更多相关文章

  1. LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法

    LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法 题记 本文是LeetCode题库的第五题,没想到做这些题的速度会这么慢,工作之 ...

  2. Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法)

    Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法) Given a string s, find the longest pal ...

  3. 蜗牛慢慢爬 LeetCode 5.Longest Palindromic Substring [Difficulty: Medium]

    题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum le ...

  4. 求最长回文子串 - leetcode 5. Longest Palindromic Substring

    写在前面:忍不住吐槽几句今天上海的天气,次奥,鞋子里都能养鱼了...裤子也全湿了,衣服也全湿了,关键是这天气还打空调,只能瑟瑟发抖祈祷不要感冒了.... 前后切了一百零几道leetcode的题(sol ...

  5. LeetCode 5 Longest Palindromic Substring(最长子序列)

    题目来源:https://leetcode.com/problems/longest-palindromic-substring/ Given a string S, find the longest ...

  6. 【JAVA、C++】LeetCode 005 Longest Palindromic Substring

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...

  7. leetcode:Longest Palindromic Substring(求最大的回文字符串)

    Question:Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...

  8. [LeetCode][Python]Longest Palindromic Substring

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/longest ...

  9. 【LeetCode】Longest Palindromic Substring 解题报告

    DP.KMP什么的都太高大上了.自己想了个朴素的遍历方法. [题目] Given a string S, find the longest palindromic substring in S. Yo ...

随机推荐

  1. Waveform基于JavaScript的开源多声道音乐波形编辑器

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  2. linux下安装Nginx1.16.0

    因为最近在倒腾linux,想安装新版本的nginx,找了一圈教程没有找到对应的教程,在稍微倒腾了一会之后终于成功的安装了最新版. 服务器环境为centos,接下来是详细步骤: 安装必要依赖插件 yum ...

  3. 音乐盒子mplayer问题review

    背景:实现全志R16-linux开发板上的mplayer的调试 一.mplayer软件架构:   这里详细介绍了alsa的相关知识 二.问题解决1:播放卡顿 0.问题描述:播放过程中会突然发生卡顿,就 ...

  4. SpringBoot从入门到精通二(SpringBoot整合myBatis的两种方式)

    前言 通过上一章的学习,我们已经对SpringBoot有简单的入门,接下来我们深入学习一下SpringBoot,我们知道任何一个网站的数据大多数都是动态的,也就是说数据是从数据库提取出来的,而非静态数 ...

  5. devexpress 给GridView添加行号

    先找到 此时间gridView1_CustomDrawRowIndicator private void gridView1_CustomDrawRowIndicator(object sender, ...

  6. JIRA的安装部署问题

    JIRA的安装部署问题: 因电脑上装了两人系统,导致我的JIRA服务不能和tomcat同时启动,让我弄了好久都不知道是啥原因,经过请教,总算得出原来是JIRA的Port和Tomcat的Port冲突.在 ...

  7. Spark学习之路(十三)—— Spark Streaming 与流处理

    一.流处理 1.1 静态数据处理 在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中.应用程序根据需要查询数据或计算数据.这就是传统的静态数据处理架构.Hadoop采用HDFS进行数据 ...

  8. 在 Angular 2 Component 中使用第三方 JS 库

    本文所有内容以 Angular 2 Quick Start 项目为基础,使用 TypeScript 语言. 如上图,最近遇到一个需求,需要在一个刚启动的 Angular 2 项目中使用 snap.sv ...

  9. 【linux杂记】Ubuntu查看端口使用情况

    转载地址: https://www.linuxidc.com/Linux/2016-01/127345.htm Ubuntu查看端口使用情况,使用netstat命令: 查看已经连接的服务端口(ESTA ...

  10. mariadb10.1.17安装

    一.源码编译安装gcc-5.1.0 1.下载gcc源码包 Download (HTTP): http://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.b ...