<Medium> Unique Substrings in Wraparound String (LeetCode : C#)

이도희·2023년 6월 9일
0

알고리즘 문제 풀이

목록 보기
101/185

https://leetcode.com/problems/unique-substrings-in-wraparound-string/

📕 문제 설명

a~z까지 붙인 무한한 문자열을 기준으로 주어진 문자열에 대해 unique한 하위 문자열 개수 반환

  • Input
    문자열
  • Output
    unique한 하위 문자열 개수

예제

풀이

알파벳 별로 count 세는 배열 만든 후 wraparound되고 있는 문자열에 대해서는 maxLength를 센다. 이 maxLength와 현재까지 가지고 있었던 count의 최대를 갱신하는 식으로 모든 s를 다 본 후 전체 count 배열을 합하면 unique한 하위 문자열 개수를 구할 수 있다.

public class Solution {
    public int FindSubstringInWraproundString(string s) {
        int[] count = new int[26];
        int maxLength = 0;
        int result = 0;

        for (int i = 0; i < s.Length; i++)
        {
            if (i > 0 && (s[i] - s[i-1] == 1 || s[i-1] - s[i] == 25)) maxLength++; // wraparound 되는 문자열이면 최대 길이 ++
            else maxLength = 1;   
            count[s[i]-'a'] = Math.Max(count[s[i]-'a'], maxLength);
        }

        for (int i = 0; i < 26; i++)
        {
            result += count[i];
        }

        return result;
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글