본문 바로가기

Algorithm/Brute Force

(C++) - LeetCode (easy) 1876. Substrings of Size Three with Distinct Characters

반응형

https://leetcode.com/problems/substrings-of-size-three-with-distinct-characters/description/

부분 문자열로 전수 조사하는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

정답 변수 ans를 선언해줍니다.

📔 풀이과정

1. s에 대해 원소를 순회하며 시작점 i 기준으로 길이 3의 부분 문자열을 변수 sub에 저장합니다.2. sub문자열이 반복되는지 isWordRepeated함수를 수행해 반복되지 않았다면 ans를 1씩 더해줍니다.   2-1. isWordRepeated함수는 내부에 key alphabat, value 빈도수를 가지는 alphaMap을 선언해 이미 존재하는 alphabat이 있다면 value가 양수이므로 true를 for문 모두 수행후 false를 반환합니다.

📔 정답 출력 | 반환

ans를 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    bool isWordRepeated(string word) {
        map <char, int> alphaMap;
        for (char w : word) {
            if(alphaMap[w]) return true;
            alphaMap[w]++;
        }
        return false;
    }

    int countGoodSubstrings(string s) {
        int ans = 0;
        for(int i = 0; i < s.size(); i++) {
            string sub = s.substr(i,3);
            if (sub.size() < 3) continue;
            if(!isWordRepeated(sub)) ans++;
        }
        return ans;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.