https://leetcode.com/problems/длинная-палиндромная-подстрока/

Это вопрос, который я планировал решить с некоторого времени. Первоначальные решения, которые приходят на ум, не столь эффективны. Однако, как только вы действительно задумаетесь о свойстве палиндромной строки, этот вопрос станет действительно легко решить.

Использование массива символов само по себе не важно с точки зрения понимания. Вместо этого вы можете обойтись просто передачей строки.

class Solution {
    public String longestPalindrome(String s) {
        if (s == null || s.length() < 1) return "";
        int st=0, e = 0;
        char[] sChar = s.toCharArray();
        int strLength = s.length();
        for( int i = 0; i < strLength; i++){
            
            int strLen1 = getPalinLen(sChar, i, i, strLength);
            int strLen2 = getPalinLen(sChar, i, i+1, strLength);
            int maxLen = Math.max(strLen1, strLen2); 
            if(maxLen > e - st) {
                st = i - (maxLen - 1) / 2;
                e = i + maxLen / 2;
            }
        }
        return s.substring(st, e + 1);
    }
    
    private int getPalinLen(char[] sChar, int left, int right, int strLength) {
        
        int L = left;
        int R = right;
        while(L >= 0 && R < strLength &&  sChar[L] == sChar[R]){
            L--;
            R++;
        }
        return R-L-1;
    }
}