본문 바로가기

Algorithm/LeetCode

LeetCode 3.Longest Substring Without Repeating Characters

문제요약: 문자열(input)이 주어졌을때, 반복되는 문자(Character)없는 가장 긴 문자열의 길이를 반환 하시오.

 

예: input => abcabcbb 정답: 3

     input => bbbbb 정답: 1

     input => pwwkew 정답: 3

 

문제접근: 문자열을 처음부터 반복을하면서 똑같은 문자열을 만나기 전까지 루프를 돈다. 만약 반복된 문자열을 만나면 다음 루프로 넘어가고, 이전에 가장 긴 문자열과 비교해서 가장 긴 길이를 체크한다.

 

구현코드: 언어는 java 사용

import java.util.*;

class Solution {
	public int lengthOfLongestSubstring(String input) {
    	// 빈 문자열이면 그냥 0을 반환
    	if (input.equals("")) return 0;
        // 가장긴 문자열을 저장해놀 변수
        int maxLength = 0;
        // 문자열을 처음부터 반복해서 중복없는 가장 긴 문자열을 찾는다.
        for (int i = 0 ; i < input.length() ; i++) {
        	char element = input.charAt(i);
            // 현재 루프에서 중복없는 문자열을 만들 변수
            String result = element + "";
            // 중복된 문자열을 체크할 Set 객체 생성
            Set<Character> elementSet = new HashSet<>();
            elementSet.add(element);
            // 현재문자열 다음 문자열부터 중복체크를 하기위해 이중루프 사용
            for (int j = i + 1; j < input.length() ; j++) {
            	char nextElement = input.charAt(j);
                // set에 문자열이 있다면 루프 종료
                if (elementSet.contains(nextElement)) {
                	break;
                // 없다면 문자열을 더하고 set에도 넣는다.
                } else {
                	elementSet.add(nextElement);
                    result = result + nextElement;
                }
            }
            // 문자열길이가 더 길면 변수값 변경
            if (result.length() > maxLength) {
            	maxLength = result.length();
            }
        }
        return maxLength;
    }
}

 

 

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

LeetCode 26. Remove Duplicates from Sorted Array  (0) 2021.01.08
LeetCode 13. Roman to Integer  (0) 2021.01.07
LeetCode 337. House Robber III  (0) 2020.12.04
LeetCode 2. Add Two Numbers  (0) 2020.12.03
LeetCode 338. Counting Bits  (0) 2020.12.02