LeetCode 05 最长回文子串
思路:
中心扩展法
以每个下标做为中心, 向两遍扩散
需要注意的是, 分为奇偶两种情况
奇数时, 当前元素为中心
偶数时,当前元素和下一个元素为中心
最后保存最长长度和起始坐标即可, 注意空字符串的情况
我曾经犯的错误对substr用法不对, 第一个参数是起始位置, 第二个参数是长度, 而不是终点位置
string longestPalindrome(string s) { int maxleng = 0; int maxleft = 0; string temp = ""; string longeststr = ""; for (int i = 0; i < s.size(); i++) { string ji = wangliangbianzhao(i, i, s); string ou = wangliangbianzhao(i, i+1, s); if (ou.size() > ji.size()) { temp = ou; } else { temp = ji; } if (maxleng < temp.size()) { longeststr = temp; maxleng = temp.size(); } } return longeststr; } string wangliangbianzhao(int left, int righ, string s) { if (s == "") { return 0; } int L = left; int R = righ; int lenth = 0; while (L >=0 && R < s.size()) { if (s[L] == s[R]) { L--; R++; } else { break; } } string res = s.substr(L+1,R-L-1); return res; }