Clean and simple JAVA solution with comments


  • 12
    O
    public String longestPalindrome(String s) {
    if (s.isEmpty()) {
    	return null;
    }
    
    if (s.length() == 1) {
    	return s;
    }
    
    String longest = s.substring(0, 1);
    for (int i = 0; i < s.length(); i++) {
        
    	// get longest palindrome with center of i
    	String tmp = helper(s, i, i);
        	if (tmp.length() > longest.length()) {
    		longest = tmp;
        	}
    	
    	// get longest palindrome with center of i, i+1
    	tmp = helper(s, i, i + 1);
    	    if (tmp.length() > longest.length()) {
    		longest = tmp;
    	    }
    	}
    return longest;}
    
    public String helper(String s, int begin, int end) {
     
    while (begin >= 0 && end <= s.length() - 1 && s.charAt(begin) == s.charAt(end)) {
    
    	begin--;
    
    	end++;
    
    }
    
     return s.substring(begin + 1, end);
    }

  • 0

    String.isEmpty() means s is "", not null. The first check should be

    if (s == null || s.isEmpty()) {
      return s;
    }
    
    
    /**
     * Returns {@code true} if, and only if, {@link #length()} is {@code 0}.
     *
     * @return {@code true} if {@link #length()} is {@code 0}, otherwise
     * {@code false}
     *
     * @since 1.6
     */
    public boolean isEmpty() {
        return value.length == 0;
    }
    

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.