绮思网站建设qswoo高端网站制造
绮思网站建设qswoo,高端网站制造,成都网站建设公司地址,文交所网站建设方案给定一个字符串 s#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1#xff1a;
输入: babad 输出: bab 注意: aba 也是一个有效答案。 示例 2#xff1a;
输入: cbbd 输出: bb找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1
输入: babad 输出: bab 注意: aba 也是一个有效答案。 示例 2
输入: cbbd 输出: bb
思路
马拉车算法不会的翻我博客的最早的文章。
只是要记录一下答案是在哪个中心取到的方便取串。
class Solution {public char[] manacherString(String str) {char[] charArr str.toCharArray();char[] res new char[str.length() * 2 1];int index 0;for (int i 0; i ! res.length; i) {res[i] (i 1) 0 ? # : charArr[index];}return res;}public int[] maxLcpsLength(String str) {if (str null || str.length() 0) {return new int[2];}char[] charArr manacherString(str);int[] pArr new int[charArr.length];int index -1;int pR -1;int ansIndex-1;int max Integer.MIN_VALUE;for (int i 0; i ! charArr.length; i) {pArr[i] pR i ? Math.min(pArr[2 * index - i], pR - i) : 1;while (i pArr[i] charArr.length i - pArr[i] -1) {if (charArr[i pArr[i]] charArr[i - pArr[i]])pArr[i];else {break;}}if (i pArr[i] pR) {pR i pArr[i];index i;}if(maxpArr[i]) {maxpArr[i];ansIndexi;}max Math.max(max, pArr[i]);}int[] ansnew int[2];ans[0]max-1;ans[1]ansIndex;return ans;}public String longestPalindrome(String s) {int[] ansmaxLcpsLength(s);return s.substring((ans[1]-ans[0])/2,(ans[1]ans[0])/2(ans[1]ans[0])%2);}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90019.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!