算法中的回文数问题

分奇偶中心同时向两侧扩展

leetcode 5. Longest Palindromic Substring

本题要求求出一个字符串的最长回文子串

c++substr() 第二个参数传的是子串的长度,又搞错了

 1 class Solution {
 2 public:
 3     int mx;
 4     int Si, Ei;
 5     string longestPalindrome(string s) {
 6         if(s.length() == 0) return "";
 7         Si = 0;
 8         Ei = 1;
 9         for(int i = 0; i < s.length(); i++){
10             countPalindrome(s, i, i);
11             if(i + 1 < s.length()){
12                 countPalindrome(s, i, i + 1);
13             }
14         }
15         return s.substr(Si, Ei - Si);
16     }
17     void countPalindrome(string &s, int i, int j){
18         while(i >= 0 && j < s.length()){
19             if(s[i] == s[j]){
20                 i--;
21                 j++;
22             }else{
23                 break;
24             }
25         }
26         if(Ei - Si < j - i - 1){
27             Si = i + 1;
28             Ei = j;
29         }
30     }
31 };

 类似题目

leetcode 647. Palindromic Substrings

leetcode 516. Longest Palindromic Subsequence

猜你喜欢

转载自www.cnblogs.com/zousantuier/p/9496618.html
今日推荐