공부

[LeetCode] 3. Longest Substring Without Repeating Characters (Java)

수다쟁이직딩이 2020. 8. 3. 14:08

 

[문제 설명]

  1. 주어진 문자열에서 중복되는 문자 없이 연속으로 가장 긴 단어를 나열했을 때의 길이를 구하시오 .

[내 풀이법]

  1. 문자를 아스키코드로 변환하여 계산. A -> 65 / Z -> 90, a -> 97, z -> 122 임을 고려하여 배열의 길이를 조정(필자는 여기서 1000으로 사용).
  2. 첫번째 단어부터 그 다음수에 중복되는 수가 있는지 없는지 int 문자열에 카운팅을하여 체크.
  3. 중복되는 단어가 있을 경우 break를 걸어 문자열 길이를 체크.
  4. 제일 긴 문자열을 return.

 

class Solution {
    public int lengthOfLongestSubstring(String s) {
        String t = s;
        int totalCt = 0;
        
        for(int i=0; i<t.length(); i++){
            int[] arr = new int[1000];
            int count = 0;
            
            // System.out.println("1");
            for(int j=i; j<t.length();j++){
                int temp = (int)(t.charAt(j));
                if(arr[temp] != 0){
                    break;
                }
                else{
                    count++;
                    arr[temp]++;
                }
            }
            
            if(totalCt < count){
                totalCt = count;
            }
        }
        
        return totalCt;
    }
}