国内外网站建设,wordpress评论嵌套样式修改,1688网站怎么做,嵌入式软件开发介绍题目链接#xff1a; 5. 最长回文子串 - 力扣#xff08;LeetCode#xff09; 思路分析#xff1a; s长度最大是1000,考虑枚举#xff0c;枚举每一个s[i],以s[i]为中心点向两侧枚举#xff0c;可以发现#xff1a; 当枚举的区间长度为奇数时#xff1a;只需要满足中心点…题目链接 5. 最长回文子串 - 力扣LeetCode 思路分析 s长度最大是1000,考虑枚举枚举每一个s[i],以s[i]为中心点向两侧枚举可以发现 当枚举的区间长度为奇数时只需要满足中心点两侧的字符相等即为回文串此时两个指针直接赋值i-1 和 i1即可 当枚举的区间长度为偶数时同理只需要将枚举的起始位置中的两个指针有一个从当前s[i]开始即可(具体细节看代码) 代码1c
class Solution {
public:string longestPalindrome(string s) {string res ;for(int i 0;i s.size();i) {//长度为奇数 以i为中心点 l r直接赋值中心点的两侧开始移动int l i - 1, r i 1;//以s[i]为中点 l r向两侧移动 直到s[l]和s[r]不相等while(l 0 r s.size() s[l] s[r])l--,r;//发现区间长度大于当前res的长度则更新if(res.size() r - l - 1)//这里的substr用法 第一个参数为s的截取起始位置 第二个参数是截取的长度res s.substr(l 1,r - l - 1);//长度为偶数 此时左侧移动点从i开始 右侧从i1开始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;}
};代码2java class Solution {public String longestPalindrome(String s) {String res ;for(int i 0;i s.length();i) {int l i - 1, r i 1;while(l 0 r s.length() s.charAt(l) s.charAt(r)){l--;r;}if(res.length() r - l - 1)res s.substring(l 1, r);l i;r i 1;while(l 0 r s.length() s.charAt(l) s.charAt(r)) {l--;r;}if(res.length() r - l - 1)res s.substring(l 1, r);}return res;}
}