原题地址:https://leetcode.cn/problems/longest-chunked-palindrome-decomposition/ 
题解
每次固定左边界(leftEdge)和右边界(rightEdge),左边界以左和右边界以右的部分是已经遍历完毕的部分;
判断[leftEdge,i]和[j,rightEdge]之间的部分是否相等
- 若不相等则i++,j–,最终必然会遍历到相等的情况([leftEdge,i]和[j,rightEdge]是同一索引或相邻区间的情况,即abcba和abccba)
 
- 若相等则重置leftEdge为i+1,rightEdge为j-1,然后ans++
 
时间复杂度:O(N^2)
空间复杂度:O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
   | class Solution {     public int longestDecomposition(String text) {         int leftEdge=0,rightEdge=text.length()-1;         int i,j,k,ans=0;         boolean isEqual;         while(leftEdge<=rightEdge){             isEqual=false;             i=leftEdge;             j=rightEdge;
              while(!isEqual){                 for(k=0;j+k<=rightEdge;k++){                     if(text.charAt(leftEdge+k)!=text.charAt(j+k)){                         isEqual=false;                         break;                     }                     isEqual=true;                 }
                  if(isEqual==false){                     i++;                     j--;                 }else{                     if(i==rightEdge||j==leftEdge){                         leftEdge=999;                         rightEdge=0;                         ans+=1;                     }else{                         leftEdge=i+1;                         rightEdge=j-1;                         ans+=2;                     }                 }             }         }         return ans;     } }
  |