LongestPalindromicSubstring.java
                        
                             · 1.1 KiB · Java
                        
                    
                    
                      
                        Неформатований
                      
                      
                        
                          
                        
                    
                    
                
                
            // Problem: https://leetcode.com/problems/longest-palindromic-substring/
// Explanation: https://youtu.be/XYQecbcd6_c
class Solution {
    public String longestPalindrome(String s) {
        var result = "";
        var resultLength = 0;
        for (int i = 0; i < s.length(); i++) {
            // Odd length
            var l = i;
            var r = i;
            while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
                if ((r - l + 1) > resultLength) {
                    result = s.substring(l, r + 1);
                    resultLength = r - l + 1;
                }
                l -= 1;
                r += 1;
            }
            // Even length
            l = i;
            r = i + 1;
            while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
                if ((r - l + 1) > resultLength) {
                    result = s.substring(l, r + 1);
                    resultLength = r - l + 1;
                }
                l -= 1;
                r += 1;
            }
        }
        return result;
    }
}
                | 1 | // Problem: https://leetcode.com/problems/longest-palindromic-substring/ | 
| 2 | // Explanation: https://youtu.be/XYQecbcd6_c | 
| 3 | |
| 4 | class Solution { | 
| 5 | public String longestPalindrome(String s) { | 
| 6 | var result = ""; | 
| 7 | var resultLength = 0; | 
| 8 | |
| 9 | for (int i = 0; i < s.length(); i++) { | 
| 10 | // Odd length | 
| 11 | var l = i; | 
| 12 | var r = i; | 
| 13 | |
| 14 | while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) { | 
| 15 | if ((r - l + 1) > resultLength) { | 
| 16 | result = s.substring(l, r + 1); | 
| 17 | resultLength = r - l + 1; | 
| 18 | } | 
| 19 | l -= 1; | 
| 20 | r += 1; | 
| 21 | } | 
| 22 | |
| 23 | // Even length | 
| 24 | l = i; | 
| 25 | r = i + 1; | 
| 26 | while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) { | 
| 27 | if ((r - l + 1) > resultLength) { | 
| 28 | result = s.substring(l, r + 1); | 
| 29 | resultLength = r - l + 1; | 
| 30 | } | 
| 31 | l -= 1; | 
| 32 | r += 1; | 
| 33 | } | 
| 34 | } | 
| 35 | |
| 36 | return result; | 
| 37 | } | 
| 38 | } |