0
点赞
收藏
分享

微信扫一扫

5. 最长回文子串 - 力扣

橙子好吃吗 2022-01-06 阅读 79
c++算法

原题链接:5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)

一、思路

首先,将回文字符串分为两种,总长为奇数或者偶数来进行处理。从第一个字符开始向后枚举,然后以枚举点为中心,向两边延伸至边界(左边界是0,右边界是s.size() 。每次将结果与上一个结果进行比较。遍历完成后获得答案。时间复杂度:o(n^2)

二、补充知识点

字符串处理

三、代码

class Solution {
	public:
	    string longestPalindrome(string s) {
	        string res;
	        for(int i = 0; i < s.size(); i ++){
	            int l = i -1, r = i + 1;
	            while(l >= 0 && r < s.size() && s[l] == s[r]) l --, r ++;
	            if(res.size() < r - l - 1) res = s.substr(l + 1, r - l - 1);
	            l = i, r = i + 1;
	            while(l >= 0 && r < s.size() && s[l] == s[r]) l --, r ++;
	            if(res.size() < r - l - 1) res = s.substr(l + 1, r - l - 1);
	        }
	        return res;
	    }
	};

举报

相关推荐

0 条评论