class Solution { public: string longestPalindrome(string s) { int n = s.size(); if (n <= 1) return s; int lindex = 0, rlen = 0; for (int i = 0; i < n - 1; i++) {//“扩张”法 if (rlen >= (n - i) * 2) return s.substr(lindex, rlen); int count = 0; while (i < n - 1 && s[i + 1] == s[i]) {//先判断index范围 i++; count++; } int end = i; int first = i - count; while (first > 0 && end < n - 1 && s[first - 1] == s[end + 1]) { first--; end++; } if (rlen < end - first + 1) { lindex = first; rlen = end - first + 1; } } return s.substr(lindex, rlen); } };
近期评论