В этой статье я прикреплю ссылку на видео, в котором решаю самую длинную задачу с палиндромной подстрокой в leet code, а также поделюсь кодом.
Код
class Solution { /** Longest palindrome substring length is stored in the maxLength variable Starting index is stored in the start variable Traverse through the given string Initialize low = i - 1 and high = i + 1 Increment high till s[high] == s[i] Decrement low till s[low] == s[i] Increment high and decrement low till s[low] == s[high] maxLength = high - low - 1 start = low + 1 */ public String longestPalindrome(String s) { int n = s.length(); if(n < 2) { // handle single character string return s; } // initialize variables int maxLength = 1; int start = 0; int low; int high; for(int i = 0; i < n; i++) { low = i - 1; high = i + 1; while(high < n && s.charAt(high) == s.charAt(i)) { high++; } while(low >= 0 && s.charAt(low) == s.charAt(i)) { low--; } while(low >= 0 && high < n && s.charAt(low) == s.charAt(high)) { low--; high++; } int length = high - low - 1; if(maxLength < length) { maxLength = length; start = low + 1; } } return s.substring(start, start + maxLength); } }
Спасибо за чтение, пожалуйста, подпишитесь на мой канал YouTube, чтобы узнать больше о решении проблем Leet Code и расслабляющей музыке.