您的位置:首页 > 财经 > 金融 > 大学生自学网_营口疫情最新情况_seoul_网站推广哪家好

大学生自学网_营口疫情最新情况_seoul_网站推广哪家好

2024/12/23 11:47:56 来源:https://blog.csdn.net/kitesxian/article/details/144333857  浏览:    关键词:大学生自学网_营口疫情最新情况_seoul_网站推广哪家好
大学生自学网_营口疫情最新情况_seoul_网站推广哪家好

链接

我的代码:

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 - 1 - (l + 1) + 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 - 1 - (l + 1) + 1)res = s.substr(l + 1, r - l - 1);}return res;}
};

首先要注意这个子串和子序列的区别。前者要求连续。

这道题要求最长的,我们人工模拟一下会发现,回文串有两种:

 所以我们要分类讨论:

l r两个指针,一个往左,一个往右,只要相等,那就说明回文串长度又增加了; 

退出while循环时,l r指向的肯定不相等,或者越界了,所以[ l+1 , r-1]闭区间才是答案,长度是:
(r-1)-(l+1)+1,当它比res的size还大,我们就更新res,利用string的substr方法。

时间复杂度:

外层循环:遍历字符串的每个字符,时间复杂度为 O(n)。
内层循环:对于每个字符,最坏情况下可能会扩展到整个字符串(即在最坏情况下,两个指针分别到达字符串的两端),内层循环的时间复杂度为 O(n)。

空间复杂度是O(1)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com