본문 바로가기

Algorithm/LeetCode

LeetCode 5. Longest Palindromic Substring

문제 링크: leetcode.com/problems/longest-palindromic-substring/

 

Longest Palindromic Substring - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제 요약: 가장 긴 Palindromic(앞뒤로 읽어도 같은문자)를 반환하시오.

 

문제 접근: 단순히 루프를 돌면서 앞뒤 char를 뽑아서 비교했다.

 

class Solution {
    public String longestPalindrome(String s) {
    	if (s.length() < 2) return s;
        
        // default 가장 긴 palindrome
        String result = "" + s.charAt(0);
        
        for (int i = 0; i < s.length(); i++) {
        	// 처음문자부터 시작하고,
            char first = s.charAt(i);
            // first로 시작하는 문자열중 palindrome인 문자를 담을 변수
            String temp = "";
            // 거꾸로 시작해서,
            for (int j = s.length()-1; j > i; j--) {
                char second = s.charAt(j);
                // 처음과 끝이 같다면 그 문자열을 추출해서 비교한다.
                if (first == second) {
                    String subString = s.substring(i, j+1);
                    boolean isPalindrome = this.checkPalindrome(subString);
                    // 처음에 찾는 문자가 가장 긴 문자열이므로 다음 루프는 하지 않는다.
                    if (isPalindrome) {
                        temp = subString;
                        break;
                    }
                }
            }
            // 가장 긴 문자를 체크하기 위해 비교
            if (temp.length() > result.length()) result = temp;
        }
        
        return result;
    }
    
    public boolean checkPalindrome(String s) {
        boolean result = true;

        for (int i = 0; i < s.length()/2; i++) {
            char first = s.charAt(i);
            char second = s.charAt(s.length()-1-i);
            if (first != second) {
                result = false;
                break;
            }
        }
        return result;
    }
}

ide에서 substring 자동완성을하면 substring(int beginIndex, int endIndex) 로 나와있어서, begin부터 end까지의 문자열을 뽑는줄알아서 틀렸었었다. (javadoc을 보면 beginIndex 포함, endIndex 불포함) 그래서 j+1로해야 원하는 대로 진행된다.

'Algorithm > LeetCode' 카테고리의 다른 글

LeetCode 83. Remove Duplicates from Sorted List  (0) 2021.01.12
LeetCode 67. Add Binary  (0) 2021.01.11
LeetCode 38. Count And Say  (0) 2021.01.11
LeetCode 278. First Bad Version  (0) 2021.01.11
LeetCode 35. Search Insert Position  (0) 2021.01.11