Leetcode Longest Palindromic Substring解题报告

来源:互联网 发布:矩阵分解 matlab 编辑:程序博客网 时间:2024/05/17 07:17

首先是我自己最先写的解法:就是将每一个字符作为中心字符,然后向两边一个一个的进行扩展,看是否相等,这样来判断回文子串,但是这样实现的时候,奇数偶数的情况要分开来算,总的不影响时间复杂度,都是o(n2),代码还是很好看懂的我觉得。。。


class Solution {public:    string longestPalindrome(string s) {        int maxlen = 1;        int start = 0;        int len = s.length();        for(int i = 0;i<len;i++)        {            int j = i-1,k = i+1;            while(j>=0&&k<len&&s[j]==s[k])            {                if(k-j+1>maxlen)                {                    maxlen = k-j+1;                    start = j;                }                j--;                k++;            }        }        for(int i = 0;i<len;i++)        {            int j = i,k = i+1;            while(j>=0&&k<len&&s[j]==s[k])            {                if(k-j+1>maxlen)                {                    maxlen = k-j+1;                    start = j;                }                j--;                k++;            }        }        return s.substr(start,maxlen);    }};

但是还在discuss里面看到了一种解法,最好情况下时间复杂度为o(n),最坏情况下为O(N2),但是discuss里为了看起来行数少,看起来真的。。。然后我根据我的理解加上了注释。。。
可以带入abba,abcba这两个例子,可以更好的理解。。。
class Solution {public:    string longestPalindrome(string s) {        if(s.empty())            return "";        if(s.size()==1)            return s;        int start = 0,maxlen = 1;//初始的最长的长度就是1        int len = s.size();        for(int i = 0;i<len;)        {            if(len-i<=maxlen/2)//当剩下的长度比最长情况下的一半还要小的话,就不用比较了,因为肯定不会更长的                break;            int j = i,k = i;            while(k<s.size()-1&&s[k+1]==s[k])//这是找出所有相邻的情况                ++k;            i = k+1;            while(k<s.size()-1&&j>0&&s[k+1]==s[j-1])//跨过所有相等的子串,看左右两边是否还要相等的            {                ++k;                --j;            }            int newlen = k-j+1;            if(newlen>maxlen)            {                start = j;                maxlen = newlen;            }        }        return s.substr(start,maxlen);    }};


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 九鱼图哪些人不宜挂 在九叔世界开宝箱 神医萌宝墨九狸 亚宝九和饮多少钱一盒 中国文物九大镇国之宝 腹黑娘亲爆萌宝九王太凶猛 桃宝卷作品 桃宝儿 桃宝儿作品 有难桃花朵朵开 和氏宝玉 桃了个宝 木偶小无 九宫图算法 九宫图的计算公式 九宫图口诀 九宫图怎么做 九宫山 九宫山旅游 咸宁九宫山 九宫山滑雪场 九宫山攻略 九宫山在哪里 九宫山周边酒店 九宫山自驾游攻略 九宫山旅游攻略 九宫山门票多少钱 九宫山自驾游 九宫山好玩吗 九宫山海拔 九宫山银河谷漂流 九宫山自驾游车子能开上山吗 九宫山一天自驾游顺序 划岩山 大渡口九宫庙站天桥女 九宫格 九宫格图片 九宫格照片 九宫格解锁图案 相机九宫格 九宫格口诀 朋友圈九宫格 九宫格填数字