leecode第五题(最长回文子串)




class Solution {
public:
    string longestPalindrome(string s) {
        int len = s.length();
        if (len ==  || len == )
            return s;
        int index = , max_num = ;
        for (int i = ; i < len; i++)//检测奇数上的左右是否相同,例如aba,以b为中心
        {
            int t = i - , tt = i + , cur_num = ;
            while (t >=  && tt < len && s[t] == s[tt])//我之前把s[t] == s[tt]放开始判断,但是遇到t=-1会报错,为了解决,先判断t》=0
            {
                cur_num = tt - t + ;
                if (cur_num > max_num)
                {
                    index = t;
                    max_num = cur_num;
                }
                t--;
                tt++;
            }
        }
        for (int i = ; i < len; i++)//检测偶数位上的左右是否相同,例如baab,以aa开始扩展
        {
            int t = i, tt = i + , cur_num = ;
            while (t >=  && tt < len && s[t] == s[tt])
            {
                cur_num = tt - t + ;
                if (cur_num > max_num)
                {
                    index = t;
                    max_num = cur_num;
                }
                t--;
                tt++;
            }
        }
        return s.substr(index, max_num);
    }
};
分析:
开始时候想到的是另一种动态规划法:开始时从头遍历每个字符,在每个字符开始时,设置一个尾指针从尾到头遍历,若二者相同,就判断这俩内部是不回文(写个小循环即可)。这个虽然写了三个循环,但是循环条件可以加上“当前两个指针距离大不大于最大的回文子串长度”,若小于,即便是回文也没必要判断了,这样一来虽然时间复杂度一样,但是节省很多啊,不过运行提醒我stack不足。。一开始我以为我想错了要不就是三个循环炸了,就看了题解的思想写成这个,但是后来我想应该是写错了,因为好像是s[t] == s[tt]放开始判断引起的问题(leecode的error提示真扯淡,和vs不一样),尴尬。
leecode第五题(最长回文子串)的更多相关文章
- leetcode刷题五<最长回文子串>
		
下面是题目的描述 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 . 示例 : 输入: "babad" 输出: "bab" 注意: ...
 - 【LeetCode每日一题 Day 5】5. 最长回文子串
		
大家好,我是编程熊,今天是LeetCode每日一题的第五天,一起学习LeetCode第五题<最长回文子串>. 题意 给你一个字符串 s,找到 s 中最长的回文子串. 示例 输入:s = & ...
 - 最长回文子串 C++实现 java实现 leetcode系列(五)
		
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
 - LeetCode随缘刷题之最长回文子串
		
这一题我用的相对比较笨的方法. 相对于大佬们用的动态规划法,比较复杂.但却更容易理解,我主要是通过记录下标来确定最长回文串的. package leetcode.day_12_06; /** * 给你 ...
 - 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297
		
1297. Palindrome Time Limit: 1.0 secondMemory Limit: 16 MB The “U.S. Robots” HQ has just received a ...
 - hihocode #1032 : 最长回文子串【manacher】模板题
		
题目链接:https://vjudge.net/problem/HihoCoder-1032 manacher算法详解:https://blog.csdn.net/dyx404514/article/ ...
 - PAT甲题题解-1040. Longest Symmetric String (25)-求最长回文子串
		
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789177.html特别不喜欢那些随便转载别人的原创文章又不给 ...
 - LeetCode(5):最长回文子串
		
Medium! 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 长度最长为1000. 示例: 输入: "babad" 输出: "bab&quo ...
 - 1089 最长回文子串 V2(Manacher算法)
		
1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 回文串是指aba.abba.cccbccc.aaaa ...
 - 51nod1089(最长回文子串之manacher算法)
		
题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1089 题意:中文题诶~ 思路: 我前面做的那道回文子串的题 ...
 
随机推荐
- RabbitMQ的安装与基本使用
			
运行环境:https://oneinstack.com/install/ 在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提 ...
 - Golang  数组和字符串之间的相互转换[]byte/string
			
package main import ( "fmt" ) func main() { str := "hello" arr := []byte(str) fm ...
 - gcc,g++
			
什么是gcc / g++ 首先说明:gcc 和 GCC 是两个不同的东西 GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C.C++.JAV.Fortran.P ...
 - javaEE体系结构【转载】
			
转载自: http://blog.csdn.net/chjskarl/article/details/72629014?locationNum=3&fps=1 JavaEE是一套使用Java进 ...
 - SCU 4445 Right turn(dfs)题解
			
思路:离散化之后,直接模拟就行,标记vis开三维 代码: #include<iostream> #include<algorithm> #include<cstdio&g ...
 - Mysql优化知识点总结(转自CS-Notes)
			
转载地址:https://github.com/CyC2018/CS-Notes/blob/master/notes/MySQL.md 一.索引 B+ Tree 原理 MySQL 索引 索引优化 索引 ...
 - 题解——洛谷P2294 [HNOI2005]狡猾的商人(差分约束)
			
裸的差分约束 dfs判断负环,如果有负环就false,否则就是true 注意有多组数据,数组要清空 #include <cstdio> #include <algorithm> ...
 - 简单数论总结1——gcd与lcm
			
并不重要的前言 最近学习了一些数论知识,但是自己都不懂自己到底学了些什么qwq,在这里把知识一并总结起来. 也不是很难的gcd和lcm 显而易见的结论: 为什么呢? 根据唯一分解定理: a和b都可被分 ...
 - 微信发送红包示例(php)
			
微信红包接口 微信红包是微信支付推出的一款基于微信客户端的免费服务应用,微信红包以微信支付 为核心安全保障,为广大用户提供安全,快捷的移劢支付服务. 请求URL 现金红包 https://api.mc ...
 - Unity3D学习笔记(三十):Lua
			
Lua:是一个轻量级的脚本语句.不需要编译,直接运行的语言. 环境配置: 执行Lua有两种方式: 1.交互式编程(输入后能立即看到效果) 2.脚本式编程:运行lua文件,.lua为文件后缀 ...