leetcode进阶之路——Longest Palindromic Substring

    xiaoxiao2021-03-25  84

    这道题题意很简单,就是求给定字符串的最长回文子串 我的思路就是先找中心点,然后往两边扩展,直到出边界或不相等,然后记录本次回文串的长度,若比之前最长的长度要长,就修改原值,并记录当前的子串。 参考代码如下:

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

    tmp是当前子串的长度,maxn是之前记录的最长子串的长度,初始化为0 由于子串可能是奇数长度,也可能是偶数长度,因此中心点可能是最中间的那个字符(奇数长),也可能是中间两个字符(偶数长),因此需要分两种情况讨论。

    转载请注明原文地址: https://ju.6miu.com/read-25873.html

    最新回复(0)